TaskManager API

Projet intégrateur de la formation Python Backend. Construisez une API REST complète avec FastAPI, SQLAlchemy 2.x, Alembic, authentification JWT et déploiement Docker. Le fil rouge de toute la formation.

FastAPI SQLAlchemy 2.x Alembic JWT Pydantic v2 Docker Projet Final

🗄️ Schéma de la base

users    (id, username, email, password_hash, role, is_active, created_at)
              ↑ FK owner_id                  ↑ FK assignee_id
projects (id, title, description, owner_id, status, created_at)
              ↑ FK project_id
tasks    (id, title, description, project_id, assignee_id, status, priority, due_date, created_at)
              ↑ FK task_id    ↑ FK tag_id        ↑ FK task_id   ↑ FK author_id
task_tags (task_id, tag_id)   tags (id, name, color)   comments (id, task_id, author_id, content, created_at)

📦 Livrables attendus

🗄️ Base de données

  • Modèles SQLAlchemy 2.x (Mapped)
  • Relations (1:N, N:N avec task_tags)
  • Migrations Alembic complètes
  • Données de test via script seed.py

⚡ API FastAPI

  • Auth JWT (register/login/me)
  • CRUD Projects + Tasks
  • Pagination + filtres
  • Endpoint /api/v1/stats

🛡️ Validation & Sécurité

  • Schémas Pydantic v2 complets
  • Vérification ownership (IDOR)
  • BaseSettings (.env)
  • CORS configuré

🐳 Déploiement

  • Dockerfile multi-stage
  • docker-compose (app + postgres)
  • Variables d'env (.env.example)
  • Health check endpoint

🔌 Endpoints de l'API

MéthodeURLDescriptionAuth
POST/api/v1/auth/registerInscriptionNon
POST/api/v1/auth/loginConnexion → JWTNon
GET/api/v1/auth/meProfil courant
GET/api/v1/projectsMes projets
POST/api/v1/projectsCréer un projet
GET/api/v1/projects/:idDétail + stats tâches
PUT/api/v1/projects/:idMettre à jour (owner)
DELETE/api/v1/projects/:idSupprimer (cascade tasks)
GET/api/v1/projects/:id/tasksTâches paginées + filtres
POST/api/v1/projects/:id/tasksCréer une tâche
GET/api/v1/tasks/:idDétail + commentaires
PUT/api/v1/tasks/:idMettre à jour
PATCH/api/v1/tasks/:id/statusChanger le statut
DELETE/api/v1/tasks/:idSupprimer
GET/api/v1/statsKPIs globaux
GET/healthHealth check + DB checkNon

🚀 Phases de développement

1

Setup & Base de données

Configurer le projet, créer les modèles SQLAlchemy, lancer les migrations Alembic

2

Auth JWT

Implémenter register/login/me avec hachage bcrypt et tokens JWT

3

CRUD Projects & Tasks

Tous les endpoints avec pagination, filtres, vérification ownership

4

Stats & Health

Endpoint /stats avec agrégations, /health avec check DB

5

Docker & Déploiement

Dockerfile multi-stage, docker-compose avec PostgreSQL, variables d'env

▶ Lancer la solution

# Option 1 : avec Docker (recommandé)
cd solution
cp .env.example .env
docker compose up --build
# API disponible sur http://localhost:8000
# Docs OpenAPI : http://localhost:8000/docs

# Option 2 : sans Docker (SQLite)
cd solution
pip install -r requirements.txt
alembic upgrade head
python seed.py          # charger les données de test
uvicorn app.main:app --reload
# Docs : http://localhost:8000/docs

✅ Critères de validation

🏆

Félicitations — Formation Python Backend terminée !

Vous maîtrisez maintenant Flask, FastAPI, SQLAlchemy, l'auth JWT, Pydantic avancé, Django + DRF et le déploiement Docker. Vous êtes prêt pour le développement backend Python en production.

⬇ main.py ⬇ models.py ⬇ Dockerfile 🧠 QCM Final 🏠 Accueil Formation