Ariba est une application mobile moderne de cartes flash développée avec Flutter, conçue pour optimiser l'apprentissage grâce à un système de répétition espacée intelligent et des modes d'étude variés.
- Quiz Interactif : Questions à choix multiples avec feedback immédiat
- Ronde Rapide : Sessions d'apprentissage chronométrées pour améliorer la rapidité
- Jeu d'Association : Associez les termes et définitions de manière ludique
- Pratique d'Écriture : Saisissez vos réponses pour un apprentissage actif
- Système d'apprentissage adaptatif basé sur les performances
- Optimisation automatique des intervalles de révision
- Suivi intelligent des progrès d'apprentissage
- Design Material 3 avec thèmes personnalisables
- Interface intuitive et accessible
- Support des thèmes clair et sombre
- Animations fluides et transitions élégantes
- Tableau de bord des performances détaillées
- Suivi des sessions d'étude
- Métriques de progression par deck
- Historique complet des performances
- Support des images dans les cartes
- Intégration audio pour la prononciation
- Formatage de texte avancé
- Médias multiples par carte
- Import/Export de decks de cartes
- Synchronisation et sauvegarde
- Mode hors ligne complet
- Performance optimisée
L'application suit l'architecture Clean Architecture avec une séparation claire des responsabilités :
lib/
├── domain/ # Logique métier et entités
│ ├── entities/ # Modèles de données
│ ├── usecases/ # Cas d'usage métier
│ └── repositories/ # Interfaces de repositories
├── data/ # Couche d'accès aux données
│ ├── database/ # Base de données Drift
│ ├── repositories/ # Implémentations des repositories
│ └── mappers/ # Conversion entre modèles
├── ui/ # Interface utilisateur
│ ├── screens/ # Écrans de l'application
│ ├── components/ # Composants réutilisables
│ └── themes/ # Thèmes et styles
├── viewmodels/ # ViewModels (Provider)
├── services/ # Services applicatifs
└── core/ # Utilitaires et constantes
- Flutter SDK (version 3.8 ou supérieure)
- Dart SDK (version 2.17 ou supérieure)
- Android Studio / VS Code
- Git
-
Cloner le repository
git clone https://github.com/alox92/Ariba.git cd ariba -
Installer les dépendances
flutter pub get
-
Générer les fichiers de code
flutter packages pub run build_runner build
-
Lancer l'application
flutter run
-
Activer le développement web (optionnel)
flutter config --enable-web
-
Configurer les émulateurs
flutter emulators --launch <emulator_id>
- Flutter : Framework UI multiplateforme
- Dart : Langage de programmation
- Provider : Gestion d'état réactive et simple
- Drift : ORM SQLite type-safe pour Flutter
- SQLite : Base de données locale
- Go Router : Routage déclaratif moderne
- JSON Annotation : Sérialisation JSON
- Equatable : Comparaison d'objets simplifiée
- Flutter Launcher Icons : Génération d'icônes
- Path Provider : Accès aux répertoires système
-
Créer votre premier deck
- Ouvrez l'application
- Appuyez sur "Créer un nouveau deck"
- Donnez un nom et une description à votre deck
-
Ajouter des cartes
- Entrez dans votre deck
- Appuyez sur "Ajouter une carte"
- Saisissez la question et la réponse
- Ajoutez des médias si nécessaire
-
Commencer à étudier
- Sélectionnez un mode d'étude
- Suivez les instructions à l'écran
- Consultez vos statistiques après chaque session
- Questions à choix multiples générées automatiquement
- Feedback immédiat avec explications
- Score et temps de réponse trackés
- Sessions chronométrées pour améliorer la rapidité
- Difficulté progressive
- Classements et défis personnels
- Associez les termes avec leurs définitions
- Interface de glisser-déposer intuitive
- Scores basés sur la précision et la vitesse
- Saisissez vos réponses manuellement
- Vérification automatique avec tolérance aux fautes
- Amélioration de la mémorisation active
# Tests unitaires
flutter test
# Tests avec couverture
flutter test --coverage
# Tests d'intégration
flutter drive --target=test_driver/app.darttest/
├── unit/ # Tests unitaires
│ ├── domain/ # Tests des entités et use cases
│ ├── data/ # Tests des repositories et mappers
│ └── viewmodels/ # Tests des ViewModels
├── widget/ # Tests de widgets
├── integration/ # Tests d'intégration
└── mocks/ # Mocks et helpers de test
# Génération de code
flutter packages pub run build_runner build
# Génération avec suppression des anciens fichiers
flutter packages pub run build_runner build --delete-conflicting-outputs
# Mode watch pour génération automatique
flutter packages pub run build_runner watch
# Nettoyage
flutter clean && flutter pub get- Classes : PascalCase (
DeckViewModel) - Fichiers : snake_case (
deck_view_model.dart) - Variables : camelCase (
currentDeck) - Constantes : SCREAMING_SNAKE_CASE (
DEFAULT_DIFFICULTY)
# Debug APK
flutter build apk --debug
# Release APK
flutter build apk --release
# App Bundle (recommandé pour Play Store)
flutter build appbundle --release# Debug
flutter build ios --debug
# Release
flutter build ios --releaseflutter build web --releaseLes contributions sont les bienvenues ! Veuillez suivre ces étapes :
- Fork le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add some AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
- Suivez les conventions de code Dart/Flutter
- Ajoutez des tests pour les nouvelles fonctionnalités
- Mettez à jour la documentation si nécessaire
- Assurez-vous que tous les tests passent
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- Issues : GitHub Issues
- Documentation : Wiki du projet
- Email : support@ariba-app.com
- Équipe Flutter pour le framework exceptionnel
- Communauté open source pour les packages utilisés
- Beta testeurs pour leurs retours précieux
⭐ N'hésitez pas à donner une étoile au projet si vous l'aimez !
- fl_chart : Visualisations graphiques
- shared_preferences : Stockage local des préférences