PythonTaMère est une plateforme web d'apprentissage Python interactive qui permet d'exécuter du code Python directement dans le navigateur grâce à Pyodide (WebAssembly). Le projet suit une architecture moderne avec un backend FastAPI et un frontend vanilla JavaScript.
Python_Ta_Mere/
│
├── 📄 Documentation
│ ├── README.md # Documentation principale du projet
│ ├── QUICKSTART.md # Guide de démarrage rapide
│ ├── TUTORIAL.md # Tutoriel détaillé pas à pas
│ ├── PROJECT_SUMMARY.md # Résumé complet du projet
│ ├── STRUCTURE.md # Structure existante (ancienne version)
│ ├── STRUCTURE_DETAILLEE.md # Ce fichier - Structure détaillée
│ ├── VISUAL_GUIDE.md # Guide visuel de l'interface
│ └── START_HERE.md # Point de départ pour nouveaux utilisateurs
│
├── 🔧 Configuration
│ ├── requirements.txt # Dépendances Python du projet
│ ├── docker-compose.yml # Configuration Docker Compose
│ ├── Dockerfile.backend # Image Docker pour le backend
│ ├── start.sh # Script de démarrage Linux/Mac
│ └── start.bat # Script de démarrage Windows
│
├── 🧠 Backend (API FastAPI)
│ ├── __init__.py # Package Python (vide)
│ ├── main.py # Point d'entrée principal de l'API
│ ├── database.py # Configuration SQLAlchemy et connexion DB
│ ├── models.py # Modèles de données (ORM SQLAlchemy)
│ ├── schemas.py # Schémas Pydantic pour validation
│ ├── auth.py # Système d'authentification JWT
│ ├── init_db.py # Initialisation DB + données d'exemple
│ ├── add_lessons.py # Script pour ajouter des leçons supplémentaires
│ │
│ └── 🛣️ routes/ # Endpoints de l'API REST
│ ├── __init__.py # Package Python (vide)
│ ├── auth_routes.py # Routes d'authentification
│ ├── lessons_routes.py # Routes des leçons
│ ├── exercises_routes.py # Routes des exercices
│ └── submissions_routes.py # Routes des soumissions
│
└── 🌐 Frontend (Application Web)
├── index.html # Page HTML principale (SPA)
│
├── 🎨 css/ # Styles CSS
│ ├── style.css # Styles principaux (responsive)
│ └── markdown-style.css # Styles pour le rendu Markdown
│
└── 💻 js/ # Scripts JavaScript
├── api.js # Client API REST
├── app.js # Application principale (navigation, UI)
├── editor.js # Wrapper Monaco Editor
├── runner.js # Pyodide runner (exécution Python)
├── i18n.js # Internationalisation (FR/EN)
└── messages.js # Messages et traductions
| Fichier | Rôle | Contenu |
|---|---|---|
README.md |
Documentation principale | Description du projet, installation, utilisation |
QUICKSTART.md |
Guide rapide | Démarrage en 5 minutes |
TUTORIAL.md |
Tutoriel complet | Guide détaillé pas à pas |
PROJECT_SUMMARY.md |
Résumé technique | Vue d'ensemble, architecture, métriques |
STRUCTURE.md |
Structure existante | Ancienne version de la structure |
STRUCTURE_DETAILLEE.md |
Structure détaillée | Ce fichier - Rôles détaillés |
VISUAL_GUIDE.md |
Guide visuel | Screenshots et explications UI |
START_HERE.md |
Point de départ | Pour nouveaux utilisateurs |
| Fichier | Rôle | Contenu |
|---|---|---|
requirements.txt |
Dépendances Python | Liste des packages Python nécessaires |
docker-compose.yml |
Orchestration Docker | Services backend + frontend |
Dockerfile.backend |
Image Docker backend | Configuration pour containeriser l'API |
start.sh |
Script Linux/Mac | Démarrage automatique des serveurs |
start.bat |
Script Windows | Démarrage automatique des serveurs |
| Fichier | Rôle | Fonctionnalités |
|---|---|---|
main.py |
Point d'entrée API | Configuration FastAPI, CORS, routes, logging |
database.py |
Configuration DB | SQLAlchemy engine, session, Base |
models.py |
Modèles de données | 7 modèles ORM (User, Lesson, Exercise, etc.) |
schemas.py |
Validation données | Schémas Pydantic pour API requests/responses |
auth.py |
Authentification | JWT, magic tokens, permissions |
init_db.py |
Initialisation DB | Création tables + données d'exemple |
add_lessons.py |
Script utilitaire | Ajout de leçons supplémentaires |
| Fichier | Rôle | Endpoints |
|---|---|---|
auth_routes.py |
Authentification | /auth/magic-link, /auth/verify, /auth/me |
lessons_routes.py |
Gestion leçons | /lessons (CRUD complet) |
exercises_routes.py |
Gestion exercices | /exercises (CRUD complet) |
submissions_routes.py |
Soumissions | /submissions (sauvegarde solutions) |
| Fichier | Rôle | Contenu |
|---|---|---|
index.html |
Page principale | Structure HTML, modals, navigation |
css/style.css |
Styles principaux | CSS moderne, responsive, variables |
css/markdown-style.css |
Styles Markdown | Rendu des leçons et exercices |
| Fichier | Rôle | Fonctionnalités |
|---|---|---|
api.js |
Client API | Requêtes HTTP, authentification, gestion tokens |
app.js |
Application principale | Navigation, UI, gestion état, modals |
editor.js |
Monaco Editor | Wrapper pour éditeur de code VS Code |
runner.js |
Pyodide Runner | Exécution Python dans navigateur |
i18n.js |
Internationalisation | Support FR/EN |
messages.js |
Messages | Textes et traductions |
| Modèle | Rôle | Relations |
|---|---|---|
User |
Utilisateurs | → Progress, Submissions |
Lesson |
Leçons/Modules | → Exercises, Progress |
Exercise |
Exercices | → TestCases, Submissions |
TestCase |
Tests unitaires | → Exercise |
Submission |
Soumissions code | → User, Exercise |
Progress |
Progression utilisateur | → User, Lesson |
MagicToken |
Tokens auth | - |
User (1) ←→ (N) Progress ←→ (1) Lesson
User (1) ←→ (N) Submission ←→ (1) Exercise
Lesson (1) ←→ (N) Exercise ←→ (N) TestCase
User → Email → Magic Link → Token → JWT → Session
Frontend → GET /lessons → Backend → SQLite → JSON → Frontend → Render
Frontend → GET /exercises/:id → Backend → (Exercise + Tests) → Frontend
↓
Monaco Editor (code editing)
↓
Pyodide (Python execution in WASM)
↓
Local Tests (validation)
↓
POST /submissions → Backend → Save Progress
- FastAPI : Framework API REST moderne
- SQLAlchemy : ORM pour base de données
- Pydantic : Validation des données
- SQLite : Base de données (développement)
- JWT : Authentification par tokens
- Uvicorn : Serveur ASGI
- Vanilla JavaScript : Pas de framework (performance)
- Monaco Editor : Éditeur de code VS Code
- Pyodide : Python en WebAssembly
- Marked.js : Rendu Markdown
- Font Awesome : Icônes
- CSS Grid/Flexbox : Layout moderne
- Docker : Containerisation
- Docker Compose : Orchestration
- Nginx : Serveur web frontend
| Catégorie | Valeur |
|---|---|
| Fichiers Python | 12 |
| Fichiers JavaScript | 6 |
| Fichiers CSS | 2 |
| Fichiers HTML | 1 |
| Fichiers Config | 5 |
| Fichiers Documentation | 8 |
| Total Fichiers | 34 |
| Lignes de Code | ~3,500 |
| Lignes Documentation | ~1,200 |
| Modèles DB | 7 |
| Endpoints API | 20+ |
| Pages Frontend | 6 |
- Backend :
python backend/main.py→ Port 8000 - Frontend :
python -m http.server 3000 --directory frontend→ Port 3000
- Windows :
start.bat - Linux/Mac :
./start.sh
docker-compose up- ✅ Exécution Python dans le navigateur
- ✅ Tests automatiques avec feedback
- ✅ Suivi de progression
- ✅ Mode invité (sans compte)
- ✅ Interface gaming moderne
- ✅ CRUD leçons et exercices
- ✅ Gestion des tests unitaires
- ✅ Interface admin intégrée
- ✅ Statistiques de progression
- ✅ Authentification par magic link
- ✅ API REST complète
- ✅ Responsive design
- ✅ Multi-langue (FR/EN)
- ✅ Architecture modulaire
- ✅ Exécution côté client (sandbox)
- ✅ JWT avec expiration
- ✅ CORS configuré
- ✅ Rate limiting
- ✅ Validation Pydantic
- ✅ Permissions admin/user
- 🔄 CSP stricte
- 🔄 HTTPS obligatoire
- 🔄 Email réel pour magic links
- 🔄 Audit logs
- 🔄 Re-validation serveur
- ✅ Exécution côté client (pas de charge serveur)
- ✅ API légère (FastAPI)
- ✅ Chargement progressif (Pyodide)
- ✅ Caching navigateur
- 🔄 Service Worker (PWA)
- 🔄 Compression gzip/brotli
- 🔄 CDN pour assets
- 🔄 Lazy loading
- 🔄 PostgreSQL pour scale
- Home : Landing page avec features
- Leçons : Catalogue avec progression
- Détail Leçon : Contenu Markdown + exercices
- Exercice : Split view (énoncé | éditeur + console)
- Profil : Statistiques de progression
- Admin : Formulaires CRUD (si admin)
- Moderne : Design épuré, couleurs cohérentes
- Responsive : Mobile/tablette/desktop
- Accessible : Navigation clavier, labels ARIA
- Intuitive : Feedback visuel immédiat
- 3 modules : Bases, Opérations, Boucles
- 8 leçons progressives
- 15+ exercices avec tests
- 1 compte admin :
admin@pylearn.local
init_db.py: Création tables + donnéesadd_lessons.py: Ajout de leçons supplémentaires
- Se connecter en tant qu'admin
- Utiliser l'interface admin
- Créer Leçon → Exercice → Tests
- Styles :
frontend/css/style.css - Comportement :
frontend/js/app.js - API :
backend/routes/
- Configurer variables d'environnement
- Migrer vers PostgreSQL si besoin
- Utiliser Docker Compose
- Setup reverse proxy (nginx)
- Activer HTTPS
- Zéro Build : Pas de webpack, npm, juste du JS vanilla
- Progressive : Pyodide se charge en arrière-plan
- Offline-ready : Base pour une PWA
- Scalable : Architecture modulaire facile à étendre
- Documenté : Chaque fichier a des commentaires
PythonTaMère est une plateforme complète et moderne pour l'apprentissage Python, avec une architecture claire et extensible. Chaque fichier a un rôle précis dans l'écosystème de l'application, permettant une maintenance et une évolution faciles.
La structure modulaire permet d'ajouter facilement de nouvelles fonctionnalités tout en maintenant la cohérence du code et de l'architecture.
Abdel ATIA est un développeur passionné et polyvalent qui a créé PythonTaMère avec une vision unique : rendre l'apprentissage de Python accessible et fun pour tous !
- 🩺 Vétérinaire : Soigne les animaux avec passion
- 💊 Pharmacien : Conçoit des solutions thérapeutiques
- 🐍 Python Developer : Code des applications incroyables
- 🤖 IA Enthusiast : Passionné d'intelligence artificielle
- 🎮 Gaming Mindset : Applique la logique gaming à l'apprentissage
"Si je peux passer de soigner des chats à coder de l'IA, TOI aussi tu peux apprendre Python !"
Abdel croit fermement que tout le monde peut apprendre à programmer, peu importe son background. Sa propre transition de vétérinaire/pharmacien vers le développement Python en est la preuve vivante !
- Backend : FastAPI, SQLAlchemy, JWT, Docker
- Frontend : JavaScript vanilla, CSS moderne, Pyodide
- DevOps : Docker Compose, Nginx, déploiement
- Architecture : API REST, microservices, sécurité
- Pédagogie : Création de contenu éducatif interactif
- Code propre : Architecture claire et bien documentée
- User Experience : Interface intuitive et gaming
- Performance : Optimisations intelligentes
- Sécurité : Bonnes pratiques implémentées
- Accessibilité : Zéro friction pour l'utilisateur
Abdel a créé PythonTaMère pour répondre à un besoin qu'il a lui-même ressenti :
- ❌ Problème : Les plateformes d'apprentissage sont souvent ennuyeuses et complexes
- ✅ Solution : Une app gaming qui rend Python fun et accessible
- 🎯 Mission : Démocratiser l'apprentissage de la programmation
- Court terme : MVP fonctionnel et utilisable
- Moyen terme : Communauté active d'apprenants
- Long terme : Plateforme de référence pour l'apprentissage Python
- GitHub : [Profil GitHub d'Abdel]
- LinkedIn : [Profil LinkedIn d'Abdel]
- Email : [Email de contact]
- Portfolio : [Site web personnel]
"N'ayez pas peur de coder ! Chaque expert était un jour un débutant. PythonTaMère est là pour vous accompagner dans votre voyage vers la maîtrise de Python. Codez, testez, échouez, réessayez... C'est comme ça qu'on devient un développeur de ouf !" 💪
- ✅ Architecture complète : Backend + Frontend + Admin
- ✅ Technologies modernes : Pyodide, Monaco Editor, FastAPI
- ✅ Interface gaming : Design moderne et intuitif
- ✅ Documentation complète : Guides détaillés pour tous
- ✅ Déploiement ready : Docker, scripts, configuration
Structure analysée le : 2025-01-27
Version : 1.0.0 (MVP)
Développeur : Abdel ATIA - Le Dev de Ouf ! 🚀