Vocab-app
De EC_Wiki
Autres actions
🏗️ Architecture complète de vocab-app FastAPI (propre et modulaire)
app/
│
├── main.py
├── database.py
├── dependencies.py
│
├── models/
│ ├── user.py
│ ├── progress.py
│ └── __init__.py
│
├── routers/
│ ├── auth.py # login / logout / register
│ ├── users.py # profil, préférences
│ ├── progress.py # progression vocabulaire
│ ├── vocab.py # gestion des mots
│ └── __init__.py
│
├── services/
│ ├── auth_service.py # hashing, validation, création user
│ ├── progress_service.py
│ └── vocab_service.py
│
├── middleware/
│ ├── session.py # gestion des cookies signés
│ └── __init__.py
│
├── utils/
│ ├── security.py # bcrypt, tokens
│ ├── validators.py
│ └── __init__.py
│
├── templates/
│ ├── base.html
│ ├── login.html
│ ├── register.html
│ ├── dashboard.html
│ ├── review.html
│ └── components/
│ ├── navbar.html
│ ├── card.html
│ └── stats.html
│
└── static/
├── css/
│ ├── main.css
│ └── theme.css
├── js/
│ ├── htmx.min.js
│ └── app.js
└── img/
└── icons/
🎯 Explication claire de chaque partie
1) models/
Contient les tables SQLAlchemy :
- user.py → comptes utilisateurs
- progress.py → progression par utilisateur
- vocab.py (si tu veux) → mots, catégories
2) routers/
Chaque fonctionnalité a son routeur :
- auth.py → login, logout, register
- users.py → profil, préférences
- progress.py → progression vocabulaire
- vocab.py → ajout / édition / suppression de mots
3) services/
Toute la logique métier :
- auth_service.py → hashing, création user, validation
- progress_service.py → mise à jour progression
- vocab_service.py → gestion des mots
4) middleware/
Le middleware de session :
- charge la session depuis le cookie
- stocke user_id
- rend l’utilisateur disponible dans request.state.user
5) templates/
Structure claire :
- base.html → layout global
- login.html / register.html
- dashboard.html → page d’accueil utilisateur
- review.html → révision vocabulaire
- components/ → fragments réutilisables (navbar, cartes, stats)
6) static/
Tout ce qui est visuel :
- CSS
- JS
- images
- icônes
🧠 Et le main.py devient ultra propre
Il ne contient que :
- création de l’app
- middleware
- montage des routes
- montage des templates
- montage du static
🎉 Résultat
Tu obtiens une architecture :
- professionnelle
- modulaire
- scalable
- parfaite pour plusieurs utilisateurs
- idéale pour ton app de vocabulaire
- compatible avec sessions + progression + comptes