Compose : service frontend dans la stack de dev

- Nouveau service `frontend` (build ./frontend, Vite --host sur 5173, bind
  mount + volume nommé frontend_node_modules, depends_on backend).
- VITE_API_MODE=mock par défaut (aucun backend requis) ; VITE_API_TARGET
  pointe sur le service backend pour le mode http.
- .env.example : VITE_API_MODE / VITE_EDITION_ID.
- frontend/.dockerignore ; README : URL http://localhost:5173.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AwswqSChc3Rwtu61pRXiY2
This commit is contained in:
AdamThomas
2026-09-09 23:20:29 +02:00
co-authored by Claude Sonnet 5
parent c9dda65361
commit 66746b80e4
4 changed files with 40 additions and 1 deletions
+7
View File
@@ -7,3 +7,10 @@ POSTGRES_DB=benevoles
# Secret de signature des jetons (lien magique / session). À régénérer en prod. # Secret de signature des jetons (lien magique / session). À régénérer en prod.
JWT_SECRET=dev-only-change-me JWT_SECRET=dev-only-change-me
# Frontend (service `frontend` du docker-compose).
# mock (défaut) : jeu de démonstration en mémoire, aucun backend requis.
# http : API réelle — renseigner alors VITE_EDITION_ID avec l'UUID
# d'une édition (créée p. ex. par `python -m app.seed`).
VITE_API_MODE=mock
# VITE_EDITION_ID=
+6 -1
View File
@@ -14,9 +14,14 @@ cp .env.example .env
docker compose up --build docker compose up --build
``` ```
- Frontend : http://localhost:5173
- API : http://localhost:8000 - API : http://localhost:8000
- Documentation interactive : http://localhost:8000/docs - Documentation interactive : http://localhost:8000/docs
Le frontend démarre en mode `mock` (jeu de démonstration en mémoire, aucun
backend requis). Pour le brancher sur l'API réelle : `VITE_API_MODE=http` et
`VITE_EDITION_ID=<uuid>` dans `.env` (voir `frontend/README.md`).
## Tests ## Tests
```bash ```bash
@@ -31,6 +36,6 @@ démarrage du conteneur PostgreSQL.
| Dossier | Rôle | | Dossier | Rôle |
|--------------|-------------------------------------------------| |--------------|-------------------------------------------------|
| `backend/` | API FastAPI, modèle SQLModel, migrations Alembic | | `backend/` | API FastAPI, modèle SQLModel, migrations Alembic |
| `frontend/` | Interface React + Vite + TS + Tailwind (étape ultérieure) | | `frontend/` | Interface React + Vite + TS + Tailwind (service `frontend`) |
| `deploy/` | Configuration de déploiement production | | `deploy/` | Configuration de déploiement production |
| `.github/` | Chaîne CI/CD (build → GHCR → SSH sur le VPS) | | `.github/` | Chaîne CI/CD (build → GHCR → SSH sur le VPS) |
+20
View File
@@ -36,6 +36,26 @@ services:
- ./backend:/app - ./backend:/app
- venv:/app/.venv - venv:/app/.venv
frontend:
build: ./frontend
command: npm run dev -- --host --port 5173
environment:
# mock = jeu de démonstration en mémoire (défaut, aucun backend requis).
# http = API réelle : renseigner aussi VITE_EDITION_ID (UUID d'une édition
# existante, p. ex. après `docker compose run --rm backend uv run python -m app.seed`).
VITE_API_MODE: ${VITE_API_MODE:-mock}
VITE_EDITION_ID: ${VITE_EDITION_ID:-}
# Cible du proxy `/api` de Vite à l'intérieur du réseau compose.
VITE_API_TARGET: http://backend:8000
ports:
- "5173:5173"
depends_on:
- backend
volumes:
- ./frontend:/app
- frontend_node_modules:/app/node_modules
volumes: volumes:
db_data: db_data:
venv: venv:
frontend_node_modules:
+7
View File
@@ -0,0 +1,7 @@
node_modules
dist
.vite
*.tsbuildinfo
.env
.env.*
.DS_Store