Création d'Applications Éducatives Interactives

Le système educational-app-builder

Formation GT IA & Maths Flask + Python PyInstaller

Au programme

  1. Qu'est-ce que le système ?
  2. L'agent app-creator-agent
  3. Types d'applications
  4. Workflow en 8 phases
  5. Architecture technique
  6. Checklist qualité
  7. Résultats typiques

Qu'est-ce que le système ?

Un système complet pour transformer vos ressources pédagogiques en applications web interactives

  • Analyse LaTeX, PDF, Markdown
  • Génère Flask complet (backend + frontend)
  • Teste automatiquement
  • Package en exécutable standalone

Résultat : Application prête à distribuer aux élèves (fichier .exe)

L'agent app-creator-agent

Expert autonome en développement Flask

Compétences

  • Analyse contenu éducatif
  • Architecture Flask
  • Frontend HTML/CSS/JS
  • Tests automatisés (pytest)
  • Packaging PyInstaller

Autonomie

  • Détecte le type optimal
  • Génère le code complet
  • Teste automatiquement
  • Livre un produit fini

Types d'applications

Appuyez sur ↓ pour voir chaque type en détail

Type A : Visualiseur de Cours

  • Usage : Affichage structuré du cours
  • Fonctionnalités :
    • Navigation par sections
    • Recherche dans le contenu
    • Annotations personnelles
    • Export PDF
  • Détection : > 70% de contenu théorique

Type B : Exerciseur Interactif

  • Usage : Pratique avec correction automatique
  • Fonctionnalités :
    • Affichage des exercices
    • Vérification automatique
    • Feedback immédiat
    • Suivi de progression
  • Détection : > 70% d'exercices/questions

Type C : Quiz Interactif

  • Usage : Évaluation chronométrée
  • Fonctionnalités :
    • Questions QCM/ouvertes
    • Timer configurable
    • Score final
    • Historique des tentatives
  • Détection : Questionnaire/évaluation

Type D : Application Mixte (Recommandé)

  • Usage : Parcours pédagogique complet
  • Fonctionnalités :
    • Cours + exercices intégrés
    • Progression guidée
    • Tableau de bord
    • Statistiques d'apprentissage
  • Détection : Contenu mixte (défaut)

Workflow global en 8 phases

1
Analyse de la ressource (LaTeX, PDF, MD)
2
Questions minimales à l'utilisateur (3-4 max)
3
Initialisation du projet Flask
4
Génération du code (Backend + Frontend)

Appuyez sur ↓ pour voir les phases 5-8

Workflow global en 8 phases (suite)

5
Tests automatisés (pytest)
6
Packaging en exécutable (.exe)
7
Documentation complète (README, guide)
8
Rapport final et livraison

Phase 1 : Analyse de la ressource

Exemple : Fichier LaTeX sur les vecteurs (Seconde)

  • Lecture du fichier LaTeX
  • Détection : sections, exercices, formules
  • Extraction : titre, niveau, thème
  • Choix automatique : Type B (Exerciseur)

Appuyez sur ↓ pour voir l'analyse détaillée

Patterns LaTeX détectés

PATTERNS = {
    'title': r'\\title\{(.*?)\}',
    'section': r'\\section\{(.*?)\}',
    'exercice': r'\\begin\{exercice\}(.*?)\\end\{exercice\}',
    'question': r'\\question\{(.*?)\}',
    'niveau': r'niveau.*?(\d+(?:ème|ere|nde)|Terminale)',
    'theme': r'theme\{(.*?)\}'
}

Phase 2 : Questions à l'utilisateur

Maximum 3-4 questions ciblées

Questions essentielles

  1. Nom de l'application ?
  2. Confirmer le type détecté ?
  3. Fonctionnalités optionnelles ?

Valeurs par défaut

  • Nom : basé sur fichier
  • Type : détecté automatiquement
  • Style : bleu professionnel
  • Fonctionnalités : standard

Si pas de réponse : continuer avec les valeurs par défaut

Phase 3 : Initialisation du projet

Création de l'arborescence complète

Appuyez sur ↓ pour voir la structure

Structure du projet Flask

app_<nom>/ ├── app.py # Application Flask principale ├── config.py # Configuration ├── requirements.txt # Dépendances Python ├── .env.example # Variables d'environnement ├── static/ # Fichiers statiques │ ├── css/ │ │ ├── main.css # Styles principaux │ │ └── components.css # Composants réutilisables │ ├── js/ │ │ ├── main.js # JavaScript principal │ │ ├── interactions.js # Interactions │ │ └── utils.js # Fonctions utilitaires │ └── images/ # Images ├── templates/ # Templates Jinja2 │ ├── base.html # Template de base │ ├── index.html # Page d'accueil │ └── components/ # Composants ├── data/ # Données │ └── content.json # Contenu éducatif structuré ├── tests/ # Tests automatisés │ ├── test_app.py # Tests de l'application │ └── test_routes.py # Tests des routes ├── build/ # Scripts de build │ └── build_exe.py # Script PyInstaller └── README.md # Documentation

Phase 4 : Génération du code

Backend Flask

  • Routes API
  • Logique métier
  • Gestion des données
  • Validation réponses

Frontend

  • Templates Jinja2
  • CSS moderne
  • JavaScript ES6+
  • Design responsive

Appuyez sur ↓ pour voir des exemples de code

Exemple Backend : app.py

from flask import Flask, render_template, jsonify, request
from config import Config
import json

app = Flask(__name__)
app.config.from_object(Config)

# Chargement du contenu éducatif
def load_content():
    with open('data/content.json', 'r', encoding='utf-8') as f:
        return json.load(f)

CONTENT = load_content()

@app.route('/')
def index():
    """Page principale"""
    return render_template('index.html',
                         title=CONTENT['metadata']['title'])

@app.route('/api/check/', methods=['POST'])
def check_answer(exercise_id):
    """Vérifier une réponse"""
    data = request.get_json()
    # Logique de vérification...
    return jsonify({'correct': True, 'feedback': 'Bravo !'})

Exemple Frontend : CSS moderne

:root {
    --primary-color: #4F46E5;
    --success-color: #10B981;
    --danger-color: #EF4444;
    --background: #F9FAFB;
    --surface: #FFFFFF;
}

.exercise-card {
    background: var(--surface);
    border-radius: 8px;
    padding: 1.5rem;
    margin-bottom: 1.5rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
    transition: transform 0.2s;
}

.exercise-card:hover {
    transform: translateY(-2px);
}

Exemple Frontend : JavaScript ES6+

// API Client
class ExerciseAPI {
    constructor() {
        this.baseURL = window.location.origin;
    }

    async checkAnswer(exerciseId, answer) {
        const response = await fetch(
            `${this.baseURL}/api/check/${exerciseId}`,
            {
                method: 'POST',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify({ answer })
            }
        );
        return await response.json();
    }
}

const api = new ExerciseAPI();

Contenu structuré : content.json

{
  "metadata": {
    "title": "Exercices sur les Vecteurs",
    "level": "Seconde",
    "theme": "Vecteurs",
    "type": "exercices"
  },
  "exercises": [
    {
      "id": 1,
      "question": "Calculer les coordonnées du vecteur AB...",
      "type": "input",
      "answer": "(3; 4)",
      "hint": "Utilisez la formule...",
      "solution": "Détail de la solution...",
      "feedback_correct": "Excellent !",
      "feedback_wrong": "Revérifiez vos calculs."
    }
  ]
}

Phase 5 : Tests automatisés

Tests avec pytest

  • Tests de routes
  • Tests des API
  • Tests de validation
  • Couverture de code > 80%

Appuyez sur ↓ pour voir un exemple de test

Exemple : test_app.py

import pytest
from app import app

@pytest.fixture
def client():
    app.config['TESTING'] = True
    with app.test_client() as client:
        yield client

def test_index_page(client):
    """Test de la page d'accueil"""
    response = client.get('/')
    assert response.status_code == 200
    assert b'Application' in response.data

def test_check_answer_correct(client):
    """Test de vérification - réponse correcte"""
    response = client.post('/api/check/1', json={
        'answer': '(3; 4)'
    })
    assert response.status_code == 200
    data = response.get_json()
    assert data['correct'] == True

Tous les tests doivent passer avant packaging

Phase 6 : Packaging en exécutable

PyInstaller : un seul fichier .exe

  • Exécutable standalone
  • Templates et static inclus
  • Données embarquées
  • Aucune dépendance externe

Appuyez sur ↓ pour voir le script de build

Script de build : build_exe.py

import PyInstaller.__main__
import os
import shutil

APP_NAME = "EducationalApp"

def build():
    """Construire l'exécutable"""
    args = [
        'app.py',
        '--name', APP_NAME,
        '--onefile',  # Un seul fichier
        '--add-data', 'templates;templates',
        '--add-data', 'static;static',
        '--add-data', 'data;data',
        '--hidden-import', 'flask',
        '--hidden-import', 'jinja2',
        '--clean',
    ]

    PyInstaller.__main__.run(args)
    print(f"✅ Build terminé : dist/{APP_NAME}.exe")

if __name__ == '__main__':
    build()

Utilisation

# Construire l'exécutable
python build/build_exe.py

# L'exécutable sera dans dist/EducationalApp.exe

Distribution : Un seul fichier .exe à donner aux élèves

  • Double-clic pour lancer
  • Ouvre dans le navigateur
  • Pas d'installation nécessaire

Phase 7 : Documentation complète

README.md

  • Description de l'application
  • Installation (sources + .exe)
  • Utilisation
  • Structure du projet
  • Support et licence

GUIDE_UTILISATION.md

  • Démarrage rapide
  • Fonctionnalités détaillées
  • Raccourcis clavier
  • Dépannage
  • Conseils pédagogiques

Documentation en français, claire et complète

Phase 8 : Rapport final et livraison

Rapport détaillé automatique

Statistiques

  • Nombre d'exercices
  • Lignes de code
  • Tests : X / X passés
  • Couverture de code

Fichiers livrés

  • Code source complet
  • Exécutable .exe
  • Documentation
  • Tests

Application 100% fonctionnelle et prête à l'emploi

Fonctionnalités avancées

Appuyez sur ↓ pour voir chaque fonctionnalité

Rendu LaTeX (MathJax)

<!-- Dans base.html -->
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>

<!-- Configuration -->
<script>
MathJax = {
  tex: {
    inlineMath: [['$', '$'], ['\\(', '\\)']],
    displayMath: [['$$', '$$'], ['\\[', '\\]']]
  }
};
</script>

Affichage parfait des formules mathématiques dans le navigateur

Sauvegarde de progression (localStorage)

class ProgressManager {
    constructor(appId) {
        this.appId = appId;
        this.storageKey = `edu_app_${appId}_progress`;
    }

    saveProgress(data) {
        localStorage.setItem(this.storageKey, JSON.stringify(data));
    }

    loadProgress() {
        const data = localStorage.getItem(this.storageKey);
        return data ? JSON.parse(data) : null;
    }
}

Mode hors ligne (PWA)

// Service Worker basique
const CACHE_NAME = 'edu-app-v1';
const urlsToCache = [
  '/',
  '/static/css/main.css',
  '/static/js/main.js'
];

self.addEventListener('install', event => {
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(cache => cache.addAll(urlsToCache))
  );
});

Checklist de qualité

Code

  • ✅ Application Flask démarre
  • ✅ Tous les tests passent
  • ✅ Code commenté en français
  • ✅ Chemins portables (Win/Linux)
  • ✅ Pas de données hardcodées

Frontend

  • ✅ Design responsive
  • ✅ Formules LaTeX affichées
  • ✅ Interactions fluides
  • ✅ Feedback clairs
  • ✅ Accessibilité (WCAG)

Packaging

  • ✅ Exécutable se construit sans erreur
  • ✅ Exécutable fonctionne sur système propre
  • ✅ README complet et clair

Technologies utilisées

Backend

  • Flask 3.0 - Framework web
  • Jinja2 - Templates
  • python-dotenv - Configuration
  • pytest - Tests

Frontend

  • HTML5 - Structure
  • CSS3 - Styles modernes
  • JavaScript ES6+ - Interactions
  • MathJax 3 - Formules math

Packaging et outils

  • PyInstaller - Création d'exécutables
  • pytest-cov - Couverture de code
  • Flask-CORS - API externe (optionnel)

Exemple concret : Exercices sur les vecteurs

Contexte : Fichier LaTeX avec 15 exercices sur les vecteurs (Seconde)

Entrée

  • Fichier vecteurs.tex
  • 15 exercices
  • Formules mathématiques
  • Corrections incluses

Sortie

  • Application complète
  • Vérification automatique
  • Progression sauvegardée
  • Fichier .exe de 25 Mo

Appuyez sur ↓ pour voir le processus

Processus automatique

1
Analyse du fichier LaTeX : 15 exercices détectés
2
Type choisi : Exerciseur interactif
3
Génération de content.json (15 exercices structurés)
4
Création du code Flask + Frontend
5
Tests : 12 / 12 passés ✅
6
Build exécutable : VecteursApp.exe (25 Mo)

Fonctionnalités de l'application

Interface utilisateur

  • Liste des 15 exercices
  • Barre de progression
  • Champs de saisie
  • Boutons "Vérifier"

Fonctionnalités

  • Vérification instantanée
  • Feedback correct/incorrect
  • Indices disponibles
  • Solutions détaillées
  • Score final

Résultats typiques

Temps de création

  • Analyse ressource : 1 min
  • Questions utilisateur : 2 min
  • Génération code : 3 min
  • Tests automatiques : 1 min
  • Build exécutable : 2 min

Total : ~10 minutes

Code généré

  • Fichiers Python : ~500 lignes
  • Templates HTML : ~300 lignes
  • CSS : ~400 lignes
  • JavaScript : ~300 lignes
  • Tests : ~200 lignes

Total : ~1700 lignes

vs développement manuel : gain de temps de 90%

Avantages du système

Pour l'enseignant

  • Pas besoin de coder
  • Création ultra-rapide
  • Qualité professionnelle
  • Réutilisable et modifiable
  • Distribution facile (.exe)

Pour l'élève

  • Interface moderne
  • Feedback immédiat
  • Progression sauvegardée
  • Utilisation intuitive
  • Fonctionne hors ligne

Transformer n'importe quelle ressource en application interactive en quelques minutes

Limites et contraintes

Windows uniquement
(exécutable .exe)

Connexion requise
(pour MathJax)

Pas de base de données
(sauf si ajoutée manuellement)

Taille exécutable
(20-50 Mo selon contenu)

Antivirus
(peut bloquer l'exe)

Cas d'usage pédagogiques

Appuyez sur ↓ pour voir chaque cas

Mathématiques

Exerciseurs

  • Calcul mental
  • Algèbre
  • Géométrie
  • Fonctions

Visualiseurs

  • Cours interactifs
  • Démonstrations
  • Fiches méthodes
  • Formulaires

Sciences

  • Protocoles expérimentaux
  • Quiz de révision
  • Exercices de chimie
  • Simulations simplifiées

Langues

  • Exercices de vocabulaire
  • Conjugaison interactive
  • Compréhension de texte
  • Quiz grammaticaux

Histoire-Géo

  • Frises chronologiques
  • Quiz historiques
  • Cartes interactives
  • Études de documents

En résumé

Points forts

  • Création automatique complète
  • Qualité professionnelle
  • Tests intégrés
  • Documentation auto-générée
  • Distribution facile (.exe)
  • Gain de temps considérable

À garder en tête

  • Windows uniquement
  • Connexion internet (MathJax)
  • Taille exécutable (20-50 Mo)
  • Pas de base de données native
  • Antivirus peut bloquer

Idéal pour créer rapidement des applications éducatives interactives de qualité professionnelle

Ressources et documentation

Documentation

  • SKILL.md - Instructions skill
  • app-creator-agent.md - Agent dédié
  • Exemples de templates
  • Guides de référence

Technologies

  • Flask Documentation
  • Jinja2 Templates
  • PyInstaller Manual
  • pytest Docs

Questions ?