Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

Vocab-app

De EC_Wiki
Version datée du 5 janvier 2026 à 12:35 par Eugene (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

🏗️ 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