Votre compagnon d'étude IA — Propulsé par Gemma 4
Fonctionnalités • Architecture • Démo • Installation • Pile Technique • Licence
GemMate transforme la façon dont les étudiants universitaires apprennent en combinant le modèle Gemma 4 E2B de Google avec des techniques éprouvées de science de l'apprentissage. C'est une application Flutter multiplateforme qui exécute Gemma 4 100 % localement — pas de cloud, pas de clés API, aucune donnée ne quitte votre appareil.
💡 Le Problème : Les étudiants ont du mal à créer des supports d'étude efficaces à partir de leurs cours et manuels. Les outils IA existants nécessitent une connectivité cloud et soulèvent des questions de confidentialité.
✅ La Solution : GemMate exécute Gemma 4 E2B sur votre propre matériel, générant des flashcards personnalisées, des quiz et des explications — même en avion.
Discutez avec Gemma 4 E2B pour comprendre des concepts complexes. Posez des questions dans l'une des 6 langues prises en charge et obtenez des explications bilingues adaptées à votre niveau.
Générez des paquets de flashcards à partir de n'importe quelle conversation de chat. Les cartes utilisent l'algorithme de répétition espacée SM-2 pour des programmes de révision scientifiquement optimisés. Les paquets sont affichés sous forme de magnifiques piles de cartes en éventail avec des animations de retournement.
Des quiz à choix multiples générés par l'IA qui testent votre compréhension. Les mauvaises réponses deviennent automatiquement des flashcards pour une révision ciblée.
Photographiez des pages de manuels, des diapositives de cours ou des notes manuscrites. Les capacités de vision de Gemma 4 extraient et expliquent le contenu.
Appuyez sur le microphone pour poser des questions par la voix — parfait pour étudier les mains libres. Prend en charge le chinois, l'anglais, le japonais, le coréen, le français et l'espagnol.
Localisation complète de l'interface utilisateur et réponses IA en : Anglais, Chinois simplifié, Japonais, Coréen, Français, Espagnol.
Des rappels de répétition espacée, des invites d'étude quotidiennes et des rappels d'inactivité vous aident à rester sur la bonne voie.
D'une simple pression, générez une carte mentale visuelle avec code couleur à partir de votre conversation — rendue avec des courbes de Bézier et un canevas interactif de panoramique/zoom. Parfait pour organiser des sujets complexes avant un examen.
Importez des fichiers PDF et Word (.docx) directement dans le chat. GemMate extrait le texte et le transmet à l'IA, afin que vous puissiez poser des questions, générer des flashcards ou obtenir un résumé de n'importe quel document — sans envoi sur le cloud.
Basculez l'écran de la caméra en mode Solveur Mathématique pour photographier des équations manuscrites ou des problèmes imprimés. L'IA les résout étape par étape, et chaque étape peut être enregistrée en tant que flashcard pour l'entraînement.
Partagez des paquets de flashcards avec vos camarades via un code QR généré, ou scannez un QR à partir d'une image de votre galerie — pas besoin de pointer la caméra vers un écran.
Définissez vos propres durées de concentration et de pause (1–120 min / 1–60 min) directement depuis l'écran d'accueil. Tapez le nombre ou appuyez sur +/−. Les sessions sont suivies quotidiennement et stockées localement.
Magnifique interface utilisateur néomorphique avec mode sombre/clair, couleurs d'accentuation personnalisables et tailles de police ajustables.
GemMate utilise une architecture de routage intelligente qui sélectionne automatiquement le meilleur modèle IA disponible :
┌─────────────────────────────────────────────────┐
│ 📱 TÉLÉPHONE │
│ Application Flutter GemMate │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Chat │ │ Cartes │ │ Quiz │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ └──────────────┼──────────────┘ │
│ │ │
│ ┌───────▼────────┐ │
│ │ Routeur Intelli│ │
│ └───┬───────┬─-──┘ │
│ │ │ │
│ ┌────────────▼─┐ ┌──▼───────────────┐ │
│ │ Sur Appareil │ │ Connexion │ │
│ │ Gemma 4 E2B │ │ Ollama HTTP │ │
│ │ (Hors ligne)│ │ (WiFi LAN) │ │
│ └──────────────┘ └──────┬───────────┘ │
│ │ │
└──────────────────────────────┼──────────────────┘
│ WiFi (Réseau Local)
┌──────────────────────────────▼───────────────────┐
│ 💻 ORDINATEUR │
│ Ollama + Gemma 4 E4B │
│ (RTX 4060, réponse <1s) │
└──────────────────────────────────────────────────┘
| Condition | Modèle Utilisé | Latence |
|---|---|---|
| WiFi + Ordinateur disponible | Gemma 4 E4B via Ollama (GPU ordi) | <1s |
| Pas de WiFi, modèle installé | Gemma 4 E2B sur appareil (CPU tél) | 3-8s |
| WiFi + Pas d'ordinateur | Gemma 4 E2B sur appareil | 3-8s |
| Pas de WiFi, pas de modèle | Invite à télécharger le modèle | — |
📺 Voir la vidéo de démo de 3 minutes →
- Flutter 3.41+ (Installer Flutter)
- Appareil Android (Android 8.0+) ou émulateur
- Pour l'IA sur ordinateur : Ollama +
ollama pull gemma4:e2b
# Cloner le dépôt
git clone https://github.com/linyeping/GemMate.git
cd GemMate
# Installer les dépendances
flutter pub get
# Exécuter sur l'appareil connecté
flutter run
# Construire l'APK
flutter build apk --release# Installer Ollama (https://ollama.ai)
ollama pull gemma4:e2b
# Démarrer avec accès réseau
OLLAMA_HOST=0.0.0.0:11434 ollama serve
# Dans Paramètres GemMate → Connexion → Entrer l'IP de l'ordinateurOption A : Télécharger dans l'application (Paramètres → Gestion du modèle → Télécharger)
Option B : Installation manuelle via ADB :
# Télécharger depuis le miroir Hugging Face (Chine)
curl -L -o gemma-4-E2B-it.litertlm "https://hf-mirror.com/litert-community/gemma-4-E2B-it-litert-lm/resolve/main/gemma-4-E2B-it.litertlm"
# Pousser vers le téléphone
adb push gemma-4-E2B-it.litertlm /sdcard/Download/
# Dans l'app : Paramètres → Gestion du modèle → Charger depuis /sdcard/Download/| Composant | Technologie |
|---|---|
| Modèle IA | Gemma 4 E2B / Gemma 4 E4B |
| Runtime sur appareil | LiteRT-LM via flutter_gemma |
| Serveur Local | Ollama (ordinateur, accéléré par GPU) |
| Framework App | Flutter 3.41 / Dart |
| Algorithme d'Étude | Répétition espacée SM-2 |
| Entrée Vocale | speech_to_text |
| OCR / Vision | ML Kit (hors-ligne) + Gemma 4 multimodal (Ollama) |
| Code QR | mobile_scanner 5.x |
| Importation de Documents | pdfx + archive (parsing DOCX ZIP/XML) |
| Carte Mentale | CustomPainter + InteractiveViewer |
| Notifications | flutter_local_notifications |
| Stockage | SharedPreferences + JSON |
| Design UI | Widgets Néomorphiques personnalisés |
lib/
├── main.dart # Point d'entrée de l'app + initialisation du modèle
├── app/
│ ├── router.dart # Navigation inférieure + routage des pages
│ └── theme.dart # Thème néomorphique (clair/sombre)
├── core/
│ ├── constants.dart # Constantes de l'app + couleurs
│ ├── json_utils.dart # Utilitaires de parsing JSON
│ ├── text_utils.dart # Traitement et formatage de texte
│ └── utils.dart # Fonctions d'aide générales
├── l10n/
│ ├── app_localizations.dart # Délégué i18n
│ ├── locale_en.dart # Localisation anglaise
│ ├── locale_es.dart # Localisation espagnole
│ ├── locale_fr.dart # Localisation française
│ ├── locale_ja.dart # Localisation japonaise
│ ├── locale_ko.dart # Localisation coréenne
│ └── locale_zh.dart # Localisation chinoise
├── models/
│ ├── chat_message.dart # Modèle de message de chat
│ ├── chat_session.dart # Modèle de session de chat
│ ├── flashcard.dart # Flashcard avec champs SM-2 + groupage
│ ├── quiz.dart # Modèle d'état de quiz
│ ├── quiz_question.dart # Modèle de question de quiz
│ ├── quiz_result.dart # Résumé et score d'un quiz complété
│ └── study_plan.dart # Modèle de planning de répétition espacée
├── screens/
│ ├── capture_screen.dart # Caméra / OCR + mode Solveur Math
│ ├── chat_history_screen.dart # Gestion des sessions de chat
│ ├── chat_screen.dart # UI chat principal + voix + carte mentale + import doc
│ ├── deck_study_screen.dart # Session d'étude avec retournement de cartes
│ ├── exam_history_screen.dart # Records d'examens passés
│ ├── exam_screen.dart # Mode examen chronométré
│ ├── flashcard_screen.dart # Galerie de paquets avec piles en éventail
│ ├── home_screen.dart # Tableau de bord + minuteur Pomodoro personnalisé
│ ├── mind_map_screen.dart # Carte mentale interactive générée par IA
│ ├── onboarding_screen.dart # Configuration premier lancement + téléchargement modèle
│ ├── paper_screen.dart # Vue détaillée et export de supports d'étude
│ ├── qr_scan_screen.dart # Scan QR (caméra + galerie)
│ ├── qr_share_screen.dart # Partage de code QR pour les paquets
│ ├── quiz_screen.dart # UI quiz interactif
│ ├── review_screen.dart # Tableau de bord de révision planifiée
│ └── settings_screen.dart # Paramètres avec sous-pages
├── services/
│ ├── flashcard_generator.dart # Création de flashcards assistée par IA
│ ├── local_gemma_service.dart # Gemma 4 sur appareil via flutter_gemma
│ ├── model_download_service.dart # Téléchargement de modèle + support miroir
│ ├── notification_service.dart # Rappels d'étude
│ ├── ollama_service.dart # Client HTTP pour l'API Ollama
│ ├── pdf_service.dart # Importation PDF + DOCX et extraction de texte
│ ├── quiz_generator.dart # Génération de quiz assistée par IA
│ ├── smart_router.dart # Sélection intelligente de modèle + overrides système
│ ├── storage_service.dart # Opérations de stockage local fichier/DB
│ ├── streak_service.dart # Série quotidienne + compteur Pomodoro
│ └── study_tools.dart # Algorithmes d'étude de base (SM-2, etc.)
├── stores/
│ ├── chat_store.dart # Persistance des sessions de chat
│ ├── connection_store.dart # Gestion de l'état de connexion
│ ├── flashcard_store.dart # Persistance des flashcards + groupes
│ ├── locale_store.dart # Préférences de langue
│ └── theme_store.dart # Préférences de thème + taille de police
└── widgets/
├── animated_avatar.dart # Photo de profil animée IA/Utilisateur
├── chat_session_tile.dart # Élément de liste d'historique de chat
├── code_block.dart # Affichage de code avec coloration syntaxique
├── color_scheme_picker.dart # Sélecteur de couleur de thème
├── connection_indicator.dart # Indicateur d'état de connexion
├── download_progress_widget.dart # UI d'état de téléchargement du modèle
├── flashcard_widget.dart # UI de flashcard individuelle
├── loading_indicator.dart # Animation de chargement personnalisée
├── message_bubble.dart # Bulle de message de chat
├── model_badge.dart # Indicateur de source de modèle (Appareil/Ordi)
├── neumorphic_button.dart # Widget bouton néomorphique
├── neumorphic_container.dart # Widget carte néomorphique
├── quick_action_chips.dart # Puces de suggestions de prompts
└── quiz_option_tile.dart # Bouton de choix multiple de quiz
Sheng Wei — Étudiant en IA à l'Université de Sciences Politiques et de Droit de Gansu (GSUPL) en Chine. Développeur solo.
Projets précédents : InSeeVision (projet d'accessibilité Gemma 3).
- GitHub: @linyeping
- Kaggle: linyeping
Ce projet est sous licence Apache License 2.0 — voir le fichier LICENSE pour plus de détails.
Le modèle Gemma 4 est fourni par Google selon les Conditions d'utilisation de Gemma.
Conçu avec ❤️ pour le Hackathon Gemma 4 Good 2026
Contact : yepinglin20@gmail.com | 201180946@qq.com





















