Skip to content

El-Lebaba/Evidexe

Repository files navigation

Evidexe

Evidexe est une application d'apprentissage interactive construite avec Expo, React Native et TypeScript. Elle aide les étudiants à explorer les mathématiques, la physique et la programmation Java avec des cours courts, des simulations visuelles, des quiz et un suivi de progression local.

Expo Framework Expo Router Navigation React Native Mobile React UI React Navigation Tabs TypeScript Language JavaScript Runtime Support Java Course Content Node.js Tooling npm Package Manager SQLite Native Storage IndexedDB Web Storage KaTeX Math Rendering SVG Visualisations Android Mobile Target iOS Mobile Target Web Browser Target ESLint Code Quality Git Version Control GitHub Repository WebStorm IDE

Aperçu

Evidexe transforme des concepts abstraits en éléments que l'étudiant peut observer et manipuler. L'application combine :

  • des diapositives de cours guidées avec exemples et quiz final;
  • des simulations interactives pour les mathématiques, la physique et les algorithmes Java;
  • des profils locaux avec XP, niveaux, cours récents, succès et paramètres;
  • une architecture modulaire avec Expo Router pour faciliter l'ajout de sections et de simulations.

Le projet est actuellement une application éducative centrée sur le stockage local. Il ne contient pas de serveur distant, d'authentification distante ni de synchronisation de compte.

Fonctionnalités

Cours

  • Mathématiques : dérivées, intégrales et limites.
  • Physique : cinématique, forces et énergie.
  • Java : variables, types de données, transtypage, chaînes, opérateurs, Math, conditions, switch, boucles, tableaux, méthodes, classes et logique booléenne.
  • La progression des cours est sauvegardée pour l'utilisateur local actif.
  • Un cours atteint 100 % seulement lorsque l'exercice final est complété.

Simulations

Simulations disponibles :

  • Mathématiques : dérivées, intégrales, série de Taylor, limites, Fourier, champ de pentes et séries numériques.
  • Physique : gravité, pendule, mouvement projectile, ressort et loi de Hooke, mouvement circulaire, champs magnétiques, champs électriques, optique et réfraction, mécanique orbitale et frottement.
  • Java : tri à bulles, tri par sélection, tri par insertion, tri fusion, tri rapide et ArrayList.

Le catalogue contient aussi des entrées verrouillées ou en préparation, notamment le champ vectoriel, les collisions élastiques et plusieurs simulations Java sur les structures de données ou les notions avancées du langage.

Profil et progression

  • Plusieurs utilisateurs locaux par nom d'affichage.
  • Progression par XP et niveaux.
  • Cours récents, cours actifs et cours terminés.
  • Succès liés aux cours, aux cartes mémoire et à l'utilisation des simulations.
  • Paramètres locaux pour le mode sombre, la langue, les notifications et le compteur de FPS de développement.
  • Stockage de cartes mémoire par sujet.

Technologies

  • Expo 54 avec Expo Router 6 pour le routage et le point d'entrée de l'application.
  • React Native 0.81, React 19 et React Native Web pour l'interface mobile et web.
  • TypeScript 5.9 avec le mode strict activé.
  • React Native SVG et KaTeX pour les schémas et la notation mathématique.
  • Expo SQLite pour la persistance clé-valeur sur plateformes natives.
  • IndexedDB pour la persistance clé-valeur sur le web.
  • ESLint avec la configuration Expo.

Prérequis

  • Node.js 20 ou plus récent est recommandé.
  • npm.
  • Git.
  • Une des cibles d'exécution suivantes :
    • Expo Go ou une version de développement sur appareil physique;
    • Android Studio pour l'émulateur Android;
    • Xcode pour le simulateur iOS sur macOS;
    • un navigateur moderne pour la version web.

Installation

Cloner le dépôt :

git clone https://github.com/Veng143/Evidexe.git
cd Evidexe

Installer les dépendances :

npm install

Démarrer Expo sur le réseau local :

npm start

Démarrer Expo avec le comportement d'hébergement par défaut :

npm run startlocal

Démarrer Expo avec un tunnel :

npm run start:tunnel

Lancer une cible précise :

npm run android
npm run ios
npm run web

Scripts

Commande Description
npm start Démarre Expo avec le cache vidé et l'hébergement sur le réseau local.
npm run startlocal Démarre Expo avec le cache vidé et le comportement d'hébergement par défaut.
npm run start:tunnel Démarre Expo avec le cache vidé à travers un tunnel.
npm run android Ouvre le projet sur Android avec Expo.
npm run ios Ouvre le projet sur iOS avec Expo.
npm run web Démarre la cible web.
npm run lint Lance ESLint avec Expo.
npm run reinitialiser-projet Lance l'utilitaire local scripts/reinitialiser-projet.js.

Vérification

Lancer l'analyse du code :

npm run lint

Lancer la vérification TypeScript :

npx tsc --noEmit

Il n'y a actuellement aucun script de tests automatisés dans package.json.

Structure du projet

app/                       Routes Expo Router et écrans
assets/                    Images, icônes et ressources statiques
components/                Composants d'interface partagés
components/accueil/        Panneaux et barre supérieure de l'accueil
components/cours/          Cartes de cours
components/profil/         Panneaux de profil et de succès
constantes/                Constantes de thème partagées
data/                      Données des cours, diapositives et quiz
db/                        Persistance locale et logique de progression
features/cours/            Écran de lecture des cours
features/sections/         Aides pour les écrans de section
features/simulations/      Catalogue, écrans et interface partagée des simulations
hooks/                     Fonctions React de thème et de schéma de couleur
scripts/                   Scripts utilitaires

Modèle de persistance

L'application stocke toutes les données utilisateur localement dans un seul objet de données applicatives. Les plateformes natives utilisent expo-sqlite; la version web utilise IndexedDB. La couche partagée dans db/donnees-principales.tsx gère les utilisateurs, les paramètres, la progression des cours, les cartes mémoire, les succès et l'XP.

Ce modèle de persistance reste local à l'appareil ou au navigateur. Les données ne sont pas synchronisées entre plusieurs appareils.

Limites Actuelles

  • Certaines entrées du catalogue sont des simulations verrouillées ou en préparation.
  • L'application fonctionne avec des données locales et ne possède pas d'authentification distante ni de sauvegarde infonuagique.
  • Les tests automatisés ne sont pas encore ajoutés.
  • L'interface et le contenu sont principalement en français, mais certains identifiants techniques restent en anglais dans le code.

Feuille De Route

  • Compléter les simulations verrouillées et les entrées en préparation.
  • Ajouter des tests automatisés pour la persistance, les quiz, l'XP, les succès et les calculs des simulations.
  • Améliorer l'accessibilité et l'adaptation aux petits écrans.
  • Renforcer la stratégie de persistance si le projet évolue vers une utilisation sur plusieurs appareils.
  • Étudier un mode enseignant pour assigner des cours et consulter la progression.

Contributeurs

  • Tony Khabbaz
  • Aris Hadjeb

Licence

Aucun fichier de licence n'est actuellement inclus dans ce dépôt. Il faudra en ajouter un avant une distribution publique ou l'acceptation de contributions externes.

About

Application mobile conçue pour améliorer la compréhension de concepts

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors