Une plateforme d'e-learning innovante pour les écoles et universités
- 📖 À Propos
- ✨ Fonctionnalités
- 📊 État du Projet
- 🚀 Démarrage Rapide
- 🏗️ Architecture
- 💾 Base de Données
- 👤 Gestion de Compte
- 📦 Dépendances
- 🔄 Stratégie de Release
- 🧪 Tests
- 🐛 Signaler un Bug
- 🤝 Contribution
- 👥 Équipe
- 📄 Licence
LevelMind est une application mobile Flutter de nouvelle génération conçue pour révolutionner l'expérience d'apprentissage au sein des établissements scolaires et universitaires. Actuellement en phase BETA, elle vise à fournir un écosystème numérique complet et intuitif pour les étudiants et les enseignants.
- 🎯 Centraliser toutes les ressources pédagogiques en un seul endroit
- 📱 Offrir une expérience mobile fluide et réactive
- 🔐 Garantir la sécurité et la confidentialité des données utilisateur
- 🌐 Faciliter la communication entre étudiants et enseignants
- 📈 Supporter la croissance avec une architecture scalable
-
🔐 Authentification Complète
- Inscription de nouveaux utilisateurs
- Connexion sécurisée avec hachage SHA256
- Récupération de session automatique
- Déconnexion avec suppression des données
-
👤 Gestion de Profil
- Affichage du profil utilisateur
- Modification des informations personnelles
- Persistence automatique des données
-
📚 Partage de Cours
- Accès aux supports de cours
- Organisation hiérarchique par matière
- Téléchargement hors-ligne (prévu)
-
🗓️ Emplois du Temps
- Visualisation de l'emploi du temps
- Notifications des sessions à venir
- Intégration calendrier (prévu)
-
💾 Stockage Local
- Base de données Hive intégrée
- Persistance des données utilisateur
- Synchronisation automatique
- 📢 Annonces et Actualités
- 💬 Messagerie entre utilisateurs
- 📊 Suivi de progression académique
- 📝 Système d'évaluation
- 🔔 Notifications push
| Composant | État | Completude |
|---|---|---|
| Authentification | ✅ Stable | 100% |
| Gestion Utilisateur | ✅ Stable | 95% |
| UI/UX | 🚧 En cours | 80% |
| API Backend | 🚧 En cours | 0% |
| Tests Unitaires | 🚧 En cours | 30% |
| Documentation | ✅ À jour | 90% |
| Performances | ✅ Optimisé | 100% |
| Sécurité | ✅ Robuste | 85% |
- Flutter SDK: ≥3.1.0
- Dart SDK: ≥3.1.0 (inclus avec Flutter)
- IDE: Android Studio, VS Code ou IntelliJ IDEA
- Git: Pour cloner le dépôt
- Android: SDK ≥21 (pour le déploiement Android)
- iOS: iOS ≥12.0 (pour le déploiement iOS)
git clone https://github.com/josoavj/lvlmindapp.git
cd lvlmindappflutter pub getflutter pub run build_runner buildflutter doctor
flutter analyzeflutter emulators --launch Pixel_4_API_30
flutter runopen ios/Runner.xcworkspace
# Sélectionner votre appareil dans Xcode
flutter run# Brancher l'appareil en mode développeur
flutter runUtilisez ces identifiants pour tester l'application:
| Matricule | Mot de passe | Rôle | Établissement |
|---|---|---|---|
| 202301 | password123 | Étudiant | ISPM |
| 202302 | password123 | Étudiant | ISPM |
| 202303 | admin123 | Enseignant | ISPM |
Ou créez votre propre compte via la page d'inscription!
┌─────────────────────────────────────────────────────┐
│ LevelMind App │
├─────────────────────────────────────────────────────┤
│ Couche Présentation (Pages & Widgets) │
│ ├─ LoginPage / RegistrationPage │
│ ├─ HomePage / ProfilePage │
│ └─ SchedulePage / FilesPage │
├─────────────────────────────────────────────────────┤
│ Couche Métier (Providers & Services) │
│ ├─ UserNotifier (State Management) │
│ ├─ ThemeNotifier (Gestion du thème) │
│ ├─ EnhancedAuthService (Auth) │
│ └─ AppInitializationService (Init) │
├─────────────────────────────────────────────────────┤
│ Couche Données (Services & DB) │
│ ├─ LocalDbService (CRUD Hive) │
│ ├─ Hive Database (Local Storage) │
│ └─ UserProfile Model │
└─────────────────────────────────────────────────────┘
- MVVM: Model-View-ViewModel avec Provider
- Service Locator: AppInitService (Singleton)
- Observer: Provider pour la réactivité
- Repository: LocalDbService pour l'accès aux données
lib/
├── main.dart # Point d'entrée
├── screens/ # Pages principales
│ ├── login_page.dart
│ ├── registration_page.dart
│ ├── profile_page.dart
│ └── ...
├── pages/ # Pages secondaires
│ ├── home_page.dart
│ ├── schedule_page.dart
│ └── ...
├── Models/ # Modèles de données
│ ├── user_profile.dart
│ ├── matiere.dart
│ └── ...
├── providers/ # State management
│ ├── user_notifier.dart
│ ├── theme_notifier.dart
│ └── ...
├── services/ # Services métier
│ ├── enhanced_auth_service.dart
│ ├── local_db_service.dart
│ ├── app_initialization_service.dart
│ └── ...
├── navbar/ # Navigation
│ ├── navbar.dart
│ └── transition.dart
├── animations/ # Animations
├── data/ # Données statiques
└── json/ # Fichiers de configuration
LevelMind utilise Hive, une base de données NoSQL légère et performante pour Flutter.
| Box | Contenu | Persistance |
|---|---|---|
users |
Tous les utilisateurs de l'app | ✅ Permanente |
session |
Utilisateur actuellement connecté | ⏳ Temporaire (effacé au logout) |
// Automatique au démarrage de l'app (AppInitService)
await AppInitService().initialize();// Ajouter un utilisateur
await appInit.db.addUser(userProfile);
// Récupérer un utilisateur
UserProfile? user = appInit.db.getUser('202301');
// Mettre à jour
await appInit.db.updateUser(updatedUser);
// Supprimer
await appInit.db.deleteUser('202301');
// Sauvegarder la session
await appInit.db.saveCurrentUser(user);
// Récupérer la session
UserProfile? current = appInit.db.getCurrentUser();RegistrationPage → Validation → EnhancedAuthService.register()
↓
Hive.box("users").put(matricule, userProfile)
↓
✅ Compte créé → Auto-login → HomePage
LoginPage → Validation → EnhancedAuthService.login()
↓
Verification mot de passe (SHA256)
↓
Hive.box("session").put("currentUser", user)
↓
UserNotifier.loadCurrentUser()
↓
✅ Session active → HomePage
ProfilePage → Confirmation → UserNotifier.logout()
↓
Hive.box("session").delete("currentUser")
↓
EnhancedAuthService.logout()
↓
✅ Session effacée → WelcomePage
// Lecture simple
final user = context.read<UserNotifier>().currentUser;
// Écouter les changements
Consumer<UserNotifier>(
builder: (context, userNotifier, _) {
return Text(userNotifier.currentUser?.name ?? 'Anonyme');
}
)flutter:
sdk: flutter
provider: ^6.1.5 # State management
hive: ^2.2.3 # Database local
hive_flutter: ^1.1.0 # Hive Flutter support
crypto: ^3.0.2 # SHA256 hashingflutter_svg: ^2.0.9 # SVG rendering
google_fonts: ^6.1.0 # Google Fonts
iconsax_flutter: ^1.0.0 # Icons
cupertino_icons: ^1.0.2 # iOS iconsshared_preferences: ^2.5.3 # Préférences locales
url_launcher: ^6.0.6 # Ouvrir des URLs
image_picker: ^1.0.4 # Sélectionner des images
video_player: ^2.8.1 # Lecture vidéoflutter_lints: ^6.0.0 # Analyse de code
build_runner: ^2.4.0 # Générateur de code
hive_generator: ^2.0.0 # Génération HiveNous utilisons Semantic Versioning 2.0.0:
MAJEURE.MINEURE.CORRECTIF+METADATA
1.0.0-beta.1 ← Première beta
1.0.0-beta.2 ← Deuxième beta
1.0.0-rc.1 ← Release Candidate
1.0.0 ← Release stable
1.1.0 ← Nouvelle mineure (features)
2.0.0 ← Nouvelle majeure (breaking changes)
- Version: 1.0.0-beta.1 → 1.0.0-beta.5
- Timeline: Nov 2025 - Déc 2025
- Focus: Stabilisation auth & profil
- Audience: Testeurs internes
- Platforms: Android + iOS
- Canaux:
- Google Play (Beta Testing)
- TestFlight (iOS)
- GitHub Releases (APK direct)
- Version: 1.0.0-rc.1 → 1.0.0-rc.3
- Timeline: Déc 2025 - Jan 2026
- Focus: Bug fixes, performance
- Audience: Testeurs externes
- Validation: Test coverage > 80%
- Version: 1.0.0
- Timeline: Jan 2026
- Focus: Production-ready
- Release Notes: Complets
- Support: 1 an minimum
- Version: 1.1.0+, 2.0.0+
- Timeline: À partir de Jan 2026
- Features: Nouvelles fonctionnalités
- Cadence: Release tous les 2 mois
- Tous les tests passent (coverage > 80%)
- Pas d'erreurs
flutter analyze - Documentation mise à jour
- CHANGELOG mis à jour
- Version bumped dans pubspec.yaml
- Git tag créé
- Build APK/IPA testé
- Release notes rédigées
# 1. Générer l'APK/AAB
flutter build appbundle --release
# 2. Signer l'APK
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \
-keystore ~/.android/release-key.jks \
build/app/outputs/bundle/release/app-release.aab alias_name
# 3. Télécharger sur Google Play Console
# Suivre: https://developer.android.com/studio/publish
# 4. Déployer en BETA d'abord
# Settings → Release → Internal Testing → Upload APK → Review & Deploy# 1. Générer le build iOS
flutter build ios --release
# 2. Archiver dans Xcode
open ios/Runner.xcworkspace
# 3. Product → Archive → Upload
# 4. TestFlight → Add Beta Testers# Lancer tous les tests
flutter test
# Tests avec coverage
flutter test --coverage
lcov --list coverage/lcov.info
# Tests spécifiques
flutter test test/unit/user_notifier_test.dart
flutter test test/integration/login_test.dart- Unitaires: Services, Providers, Models
- Widgets: Pages, Widgets personnalisés
- Intégration: Flux complets (login → home)
- Performance: Mesure et optimization
## Description
[Description claire du bug]
## Étapes de Reproduction
1. [Étape 1]
2. [Étape 2]
3. [Bug observé]
## Comportement Attendu
[Ce qui devrait se passer]
## Environnement
- Version de l'app: 1.0.0-beta.1
- Plateforme: Android / iOS
- Appareil: [Marque + Modèle]
- Version OS: [Numéro]
## Logs/Screenshots
[Attachez les captures ou logs]- 📧 Email: [email protected]
- 💬 GitHub Issues: Créer une issue
- 📱 In-app: Menu → Aide → Signaler un problème
Nous acceptons les contributions! Pour contribuer:
- Fork le dépôt
- Créer une branche pour votre feature (
git checkout -b feature/amazing-feature) - Commit vos changements (
git commit -m 'Add amazing feature') - Push vers la branche (
git push origin feature/amazing-feature) - Ouvrir une Pull Request
// ✅ BON
void loginUser(String username, String password) {
// Implementation
}
const int maxRetries = 3;
// ❌ MAUVAIS
void login_user(String username, String password) {
// Implementation
}
const maxRetries = 3;- Respecter Effective Dart
- Ajouter des tests pour les nouvelles features
- Mettre à jour la documentation
- Vérifier
flutter analyze(0 errors) - Ajouter des commentaires pour la logique complexe
- Frontend Flutter
- Josoa Rakotoarimanana - Lead Developer
- Fiatoa - Frontend Developer
- Design
- Nyr Manamahefa - UI/UX Designer
- Koloina Koulié Nathalie - Designer
- Project Manager: [À compléter]
- DevOps: [À compléter]
- 📧 [email protected]
- 💬 Slack: #lvlmind-team
- 🐙 GitHub: @josoavj
Ce projet est sous licence MIT.
MIT License
Copyright (c) 2025 LevelMind Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- Flutter Team pour le framework remarquable
- Hive Community pour la base de données
- Tous les contributeurs et testeurs
- 📖 Documentation Architecture
- 🧪 Guide des Tests
- 🚀 Quick Start Guide
- 📋 Changelog Complet
- 🔐 Politique de Sécurité
