Étape 1 : squelette du projet

- Monorepo backend/ + frontend/ + deploy/
- Backend FastAPI/SQLModel/Alembic/uv qui démarre (health check, config,
  i18n, base de test PostgreSQL, pytest)
- docker-compose de développement (db + backend hot-reload)
- Chaîne CI/CD GitHub Actions : lint + tests, build image, push GHCR,
  déploiement SSH sur le VPS à chaque push main
- CLAUDE.md : vocabulaire du domaine, conventions, commandes

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017uUsRg7XzopkCPWimwg9ZM
This commit is contained in:
AdamThomas
2026-09-09 22:19:58 +02:00
co-authored by Claude Sonnet 5
commit 09d7d70076
34 changed files with 1621 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
# Backend — API de gestion des bénévoles
FastAPI · SQLModel · PostgreSQL · Alembic. Dépendances gérées par `uv`.
## Développement
Toujours via Docker Compose depuis la racine du dépôt :
```bash
docker compose up --build # démarre db + backend (reload actif)
docker compose run --rm backend uv run pytest
docker compose run --rm backend uv run ruff check .
```
## Migrations
```bash
docker compose run --rm backend uv run alembic revision --autogenerate -m "..."
docker compose run --rm backend uv run alembic upgrade head
```
## Structure
| Chemin | Rôle |
|---------------------|--------------------------------------------------------|
| `app/main.py` | Instance FastAPI, middlewares, routers |
| `app/config.py` | Configuration (variables d'environnement) |
| `app/db.py` | Engine SQLAlchemy + dépendance de session |
| `app/api/` | Routers HTTP |
| `app/models/` | Tables SQLModel du domaine |
| `app/validation/` | Moteur de règles d'affectation (cœur du produit) |
| `app/i18n/` | `t(key)` + `locales/fr.json` — aucun texte en dur ailleurs |
| `app/migrations/` | Alembic |
| `tests/` | pytest, base de test PostgreSQL réelle |
## Note
Le `uv.lock` n'est pas encore versionné (pas de `uv` sur le poste de dev).
Il sera figé et commité une fois généré dans le conteneur.