PythonTaMère est une plateforme web d'auto-formation à Python permettant d'apprendre la programmation de manière interactive, avec exécution du code directement dans le navigateur et feedback immédiat.
Créer une application web MVP permettant à des débutants d'apprendre Python via des leçons courtes et des exercices interactifs avec validation automatique, sans installation locale.
- Catalogue de leçons avec progression
- Exercices interactifs avec éditeur de code intégré
- Exécution Python côté client (Pyodide/WebAssembly)
- Tests automatiques avec feedback immédiat
- Authentification par magic link (email + OTP)
- Suivi de progression persistant
- Interface admin pour créer du contenu
- Mode invité avec progression locale
- 23 fichiers créés
- Backend : 8 fichiers Python (~1500 lignes)
- Frontend : 5 fichiers (HTML/CSS/JS) (~1800 lignes)
- Documentation : 5 fichiers Markdown (~1000 lignes)
- Configuration : 5 fichiers (Docker, scripts, config)
Backend :
- FastAPI (framework API)
- SQLAlchemy (ORM)
- Pydantic (validation)
- SQLite (base de données)
- JWT (authentification)
Frontend :
- Vanilla JavaScript (pas de framework)
- Monaco Editor (éditeur de code)
- Pyodide (Python WebAssembly)
- Marked (rendu Markdown)
- CSS moderne (Grid, Flexbox)
┌─────────────┐
│ Navigateur │
└──────┬──────┘
│
├─► Pyodide (Python WASM)
│ └─► Exécution code + tests
│
├─► Monaco Editor
│ └─► Édition code
│
└─► API Backend (FastAPI)
├─► Auth (JWT)
├─► Leçons & Exercices
├─► Soumissions
└─► Progression
│
▼
┌──────────┐
│ SQLite │
└──────────┘
Users (id, email, is_admin)
│
├─► Progress (user_id, lesson_id, status)
└─► Submissions (user_id, exercise_id, code, passed)
Lessons (id, slug, title, body_md, module)
└─► Exercises (id, lesson_id, title, prompt_md, starter_code)
└─► TestCases (id, exercise_id, code_snippet, visibility)- Authentification JWT avec tokens expirables
- Rate limiting sur les endpoints sensibles
- CORS configuré
- Validation des données entrantes (Pydantic)
- Sandbox Python côté client (pas d'exécution serveur dangereuse)
- Séparation admin/user avec vérification des permissions
- CSP (Content Security Policy) stricte
- Re-validation serveur des soumissions
- Audit logs détaillés
- HTTPS obligatoire en production
- Email réel pour magic links
- Exécution côté client : pas de charge serveur pour le code
- API légère : FastAPI très performant
- Chargement progressif : Pyodide en arrière-plan
- Caching navigateur : assets statiques
- Service Worker pour PWA
- Compression gzip/brotli
- CDN pour assets statiques
- Lazy loading des leçons
- PostgreSQL pour scale
- Home : Landing page avec features
- Leçons : Catalogue avec progression
- Détail Leçon : Contenu Markdown + liste exercices
- Exercice : Split view (énoncé | éditeur + console)
- Profil : Statistiques de progression
- Admin : Formulaires CRUD pour contenu
- Moderne : Design épuré, couleurs cohérentes
- Responsive : Adapté mobile/tablette/desktop
- Accessible : Navigation clavier, labels ARIA
- Intuitive : Feedback visuel immédiat
- README.md : Documentation technique complète
- TUTORIAL.md : Guide détaillé pas à pas
- QUICKSTART.md : Démarrage rapide (ce fichier)
- PROJECT_SUMMARY.md : Vue d'ensemble
- Comments inline : Code commenté
- 3 leçons d'exemple
- 5 exercices progressifs
- 8 tests unitaires
- 1 compte admin pré-configuré
- Types Python stricts (Pydantic)
- Validation formulaires frontend
- Tests automatiques pour exercices
- Feedback utilisateur clair
- Manuel : Scripts
start.sh/start.bat - Docker :
docker-compose.ymlprêt - Cloud : Dockerfile backend inclus
- Python 3.10+
- Navigateur moderne (Chrome, Firefox, Safari)
- 1 Go RAM
- Connexion internet (pour CDN Pyodide/Monaco)
Module 1 : Les Bases
- Variables et types
- Fonction print()
- Exercices : Hello World, Variables
Module 2 : Opérations et Conditions
- Opérateurs arithmétiques
- Structures if/else
- Exercices : Calculatrice, Pair/Impair
Module 3 : Les Boucles
- Boucle for/while
- Fonction range()
- Exercices : Somme de nombres
✅ Parcourir un catalogue de leçons et voir mon avancement ✅ Écrire/exécuter du code Python dans un éditeur web ✅ Soumettre une solution et obtenir un verdict avec tests ✅ Reprendre là où je me suis arrêté (progression sauvegardée) ✅ Créer/modifier des leçons, énoncés et tests (admin) ✅ Réaliser des exercices avec validation automatique
- Quiz QCM interactifs
- Système de badges et récompenses
- Indices progressifs pour exercices
- Historique des tentatives avec diff
- Export/Import de parcours
- Re-exécution serveur sécurisée
- Support multi-langues (i18n)
- PWA (Progressive Web App)
- Mode hors-ligne
- Analytics détaillées
- Forums/discussions
- Partage de solutions
- Classements
- Collaboration temps réel
- Zéro friction : Pas d'installation, tout dans le navigateur
- Stack moderne : Technologies actuelles et performantes
- Code propre : Architecture claire, bien documenté
- Extensible : Facile d'ajouter du contenu ou des features
- Sécurisé : Exécution sandbox, validation stricte
- Complet : Backend + Frontend + Admin + Docs
- Intégration Pyodide (Python en WebAssembly)
- Gestion des tests côté client avec contexte isolé
- Authentication stateless avec JWT
- Design responsive avec CSS pur
- FastAPI pour API REST moderne
- Monaco Editor pour éditeur de code
- Pyodide pour exécution Python navigateur
- SQLAlchemy ORM
- JWT authentification
Suivre QUICKSTART.md pour lancer en 5 minutes
Voir section "Résolution de problèmes" dans TUTORIAL.md
Le code est modulaire et bien structuré pour faciliter l'ajout de features
PythonTaMère MVP est complet et fonctionnel !
L'application répond à tous les objectifs définis :
- ✅ Apprentissage interactif de Python
- ✅ Exécution dans le navigateur
- ✅ Feedback immédiat
- ✅ Suivi de progression
- ✅ Interface admin
- ✅ Code production-ready
Le projet est prêt à être utilisé, déployé et enrichi ! 🚀