Le README était réduit à « test 4 ». Il documente désormais les sept services, le fait que crawler et flaresolverr ne tournent qu'en dev, et surtout l'installation du hook pre-push — seul filet entre `git push` et la mise en ligne, le déploiement partant sur webhook. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
53 lines
2.5 KiB
Markdown
53 lines
2.5 KiB
Markdown
# Stack metalfrom.eu
|
|
|
|
Carte des groupes de metal européens, données issues de Metal Archives
|
|
(avec accord du propriétaire du site source).
|
|
|
|
## Services
|
|
|
|
| Service | Rôle |
|
|
|--------------------|-----------------------------------------------------------------|
|
|
| `web` | Site public (carte Leaflet) |
|
|
| `admin` | Back-office (nginx + reverse-proxy vers l'API) |
|
|
| `api` | API Fastify (public + routes admin), migrations DB |
|
|
| `crawler` | Scraping incrémental/complet de Metal Archives via FlareSolverr |
|
|
| `flaresolverr` | Contournement Cloudflare (Chrome headless) pour le crawler |
|
|
| `geocoder-enqueue` | Peuple `band_locations` depuis `bands.location_text` |
|
|
| `geocoder-worker` | Géocodage Geoapify |
|
|
| `groq-worker` | Désambiguïsation LLM (Groq) des lieux non géocodés |
|
|
|
|
`crawler` et `flaresolverr` ne tournent **qu'en dev** pour l'instant : ils sont
|
|
absents de `docker-compose.yml`. La prod partage la même base, alimentée depuis
|
|
l'environnement de dev.
|
|
|
|
## Déploiement
|
|
|
|
- `docker-compose.yml` : production
|
|
- `docker-compose.dev.yml` : environnement de dev (branche `dev`, auto-déployé
|
|
via webhook Forgejo → Coolify)
|
|
|
|
Base PostgreSQL + PostGIS gérée séparément par Coolify. Variables d'env : voir
|
|
`infra/.env.example`.
|
|
|
|
## Qualité
|
|
|
|
Le déploiement se déclenche sur webhook à chaque push : rien ne s'interpose
|
|
entre `git push` et la mise en ligne. La porte de qualité est donc **locale**,
|
|
et doit être installée une fois par clone :
|
|
|
|
```
|
|
npm install
|
|
npm run hooks:install
|
|
```
|
|
|
|
| Commande | Portée |
|
|
|--------------------------------|------------------------------------------------------------|
|
|
| `npm run check` | lint + types + tests JS + ruff + pytest (~6 s) |
|
|
| `npm run test:e2e` | parcours Playwright du dashboard admin (~22 s) |
|
|
| `npm run test:integration:full`| SQL validé contre un vrai PostgreSQL+PostGIS (exige Docker)|
|
|
| `npm run check:full` | tout ci-dessus + mutation + audits de dépendances |
|
|
|
|
Le hook `pre-push` lance `check` puis `test:e2e`. `.forgejo/workflows/ci.yml`
|
|
existe mais reste inerte tant qu'aucun runner Forgejo n'est enregistré.
|
|
|
|
Outillage Python de test : `pip install -r requirements-dev.txt`.
|