Guide de démarrage pour les développeurs qui reprennent le projet ou contribuent pour la première fois.
| Outil | Version minimale | Notes |
|---|---|---|
| Python | 3.11 | Backend FastAPI |
| Node.js | 18 LTS | Frontend Next.js |
| Docker + Docker Compose | 24+ | Recommandé pour le dev local |
| PostgreSQL | 16 | Fourni par Docker Compose |
Docker Compose démarre tous les services : base de données, mailpit, API et frontend.
cp apps/api/.env.example apps/api/.env # si le fichier existe
cp apps/web/.env.local.example apps/web/.env.local # si le fichier existeSi les fichiers .env.example n'existent pas encore, crée apps/api/.env avec le contenu minimal :
ENV=development
DEBUG=true
SESSION_SECRET_KEY=devlocal-changeme
EMAIL_PROVIDER=smtp
SMTP_HOST=localhost
SMTP_PORT=1125
FRONTEND_BASE_URL=http://localhost:3001
DEVGATE_MASTER_KEY=Pour activer le chiffrement des secrets (service tokens CF), génère une master key :
python3 -c "import os, base64; print(base64.b64encode(os.urandom(32)).decode())"Copie le résultat dans DEVGATE_MASTER_KEY. Si la variable est absente, le secret store ne fonctionne pas (les tokens CF ne peuvent pas être stockés ni lus), mais le reste de l'application fonctionne.
docker compose up| Service | URL | Description |
|---|---|---|
| API FastAPI | http://localhost:8001 | Backend (interne : 8000) |
| Frontend Next.js | http://localhost:3001 | Interface utilisateur |
| Mailpit UI | http://localhost:8125 | Boîte mail de dev (magic links et OTP) |
| Mailpit SMTP | localhost:1125 | SMTP local (pour l'API hors Docker) |
| PostgreSQL | localhost:5432 | Base de données |
Le seed crée les utilisateurs et données de démo. À exécuter une seule fois :
docker compose exec api python -m app.seedsLe seed est idempotent : si des données existent déjà, il ne fait rien.
cd apps/api
python3.11 -m venv .venv
.venv/bin/pip install -e ".[dev]"Créer apps/api/.env (voir section Docker pour le contenu minimal).
Pour PostgreSQL local, adapter DATABASE_URL :
DATABASE_URL=postgresql+psycopg://devgate:devgate@localhost:5432/devgatecd apps/api
.venv/bin/alembic upgrade headcd apps/api
.venv/bin/python -m app.seedscd apps/api
.venv/bin/uvicorn app.main:app --reload --port 8000L'API est disponible sur http://localhost:8000.
cd apps/web
npm installCréer apps/web/.env.local :
NEXT_PUBLIC_API_URL=http://localhost:8000cd apps/web
npm run devLe frontend est disponible sur http://localhost:3000.
Les tests s'exécutent depuis le virtualenv du backend. Ne jamais utiliser le Python système.
cd apps/api
.venv/bin/python -m pytestPour les tests avec sortie verbeuse :
cd apps/api
.venv/bin/python -m pytest -vPour un seul fichier ou module :
cd apps/api
.venv/bin/python -m pytest tests/test_auth.py -vLes tests utilisent SQLite en mémoire par défaut. Aucune base PostgreSQL n'est requise pour lancer les tests.
| Rôle | Accès | |
|---|---|---|
admin@agence.fr |
agency_admin |
Back-office complet |
amiel@lavon.fr |
agency_admin |
Back-office complet |
marie@client-x.com |
client_member |
Portail — organisation "Client X" |
Ces comptes n'ont pas de mot de passe. Pour se connecter :
- Envoyer une requête
POST /auth/startavec l'email voulu et"method": "magic_link" - Ouvrir Mailpit sur http://localhost:8125 (Docker) ou http://localhost:8025 (local sans Docker)
- Cliquer sur le lien de connexion reçu ou copier le token
Exemple rapide via curl :
curl -X POST http://localhost:8001/auth/start \
-H "Content-Type: application/json" \
-d '{"email": "admin@agence.fr", "method": "magic_link"}'.
├── apps/
│ ├── api/ # Backend FastAPI
│ │ ├── app/
│ │ │ ├── modules/ # Modules métier (auth, portal, admin, gateway…)
│ │ │ ├── shared/ # Modèles, dépendances, exceptions partagées
│ │ │ ├── migrations/ # Migrations Alembic
│ │ │ ├── config.py # Variables d'environnement (pydantic-settings)
│ │ │ ├── main.py # Point d'entrée FastAPI
│ │ │ └── seeds.py # Données de développement
│ │ └── tests/
│ └── web/ # Frontend Next.js
├── docs/ # Documentation projet
└── docker-compose.yml
- Référence API — tous les endpoints documentés
- Modèle de données — schéma et relations
- Variables d'environnement — référence complète
- Contribution backend — règles de code
- ADR-001 — Cloudflare autodiscovery
- ADR-002 — Secret store interne