Le système educational-app-builder
Formation GT IA & Maths Flask + Python PyInstaller
Un système complet pour transformer vos ressources pédagogiques en applications web interactives
Résultat : Application prête à distribuer aux élèves (fichier .exe)
Expert autonome en développement Flask
Appuyez sur ↓ pour voir chaque type en détail
Appuyez sur ↓ pour voir les phases 5-8
Exemple : Fichier LaTeX sur les vecteurs (Seconde)
Appuyez sur ↓ pour voir l'analyse détaillée
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\{(.*?)\}'
}
Maximum 3-4 questions ciblées
Si pas de réponse : continuer avec les valeurs par défaut
Création de l'arborescence complète
Appuyez sur ↓ pour voir la structure
Appuyez sur ↓ pour voir des exemples de code
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 !'})
: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);
}
// 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();
{
"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."
}
]
}
Tests avec pytest
Appuyez sur ↓ pour voir un exemple de test
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
PyInstaller : un seul fichier .exe
Appuyez sur ↓ pour voir le script de build
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()
# 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
Documentation en français, claire et complète
Rapport détaillé automatique
Application 100% fonctionnelle et prête à l'emploi
Appuyez sur ↓ pour voir chaque fonctionnalité
<!-- 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
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;
}
}
// 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))
);
});
Contexte : Fichier LaTeX avec 15 exercices sur les vecteurs (Seconde)
vecteurs.texAppuyez sur ↓ pour voir le processus
Total : ~10 minutes
Total : ~1700 lignes
vs développement manuel : gain de temps de 90%
Transformer n'importe quelle ressource en application interactive en quelques minutes
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)
Appuyez sur ↓ pour voir chaque cas
Idéal pour créer rapidement des applications éducatives interactives de qualité professionnelle
SKILL.md - Instructions skillapp-creator-agent.md - Agent dédiéQuestions ?