# Backend - RoadWave Backend Go de l'application RoadWave. ## Structure ``` backend/ ├── cmd/ # Points d'entrée de l'application │ └── api/ # Serveur API REST ├── internal/ # Code interne (non exportable) │ ├── auth/ # Validation JWT, intégration Zitadel │ ├── user/ # Profils, centres d'intérêt │ ├── content/ # CRUD contenus, métadonnées │ ├── geo/ # Recherche géospatiale, algorithme │ ├── streaming/ # Génération HLS, transcoding │ ├── moderation/ # Signalements, workflow │ ├── payment/ # Intégration Mangopay │ └── analytics/ # Métriques écoute, jauges ├── pkg/ # Code exportable (bibliothèques réutilisables) ├── migrations/ # Migrations SQL ├── tests/ │ └── bdd/ # Step definitions pour tests Gherkin ├── config/ # Fichiers de configuration (dev, staging, prod) ├── go.mod # Dépendances Go ├── sqlc.yaml # Configuration SQLC ├── .air.toml # Configuration Air (hot reload) ├── Dockerfile # Image production └── Dockerfile.dev # Image développement ``` ## Architecture Voir [ADR-012 : Architecture Backend](../docs/adr/012-architecture-backend.md) pour les détails de l'architecture modulaire. ## Commandes Depuis la **racine du monorepo** : ```bash # Développement make dev # Démarrer avec hot reload make docker-up # Lancer tous les services Docker # Tests make test # Lancer tous les tests make test-unit # Tests unitaires uniquement make test-bdd # Tests BDD Gherkin # Migrations make migrate-up # Appliquer les migrations make migrate-down # Rollback dernière migration make migrate-create name=add_users # Créer nouvelle migration # Build make build # Compiler le binaire production make lint # Linter le code make format # Formatter le code ``` ## Configuration 1. Copier `.env.example` en `.env` : ```bash cp backend/.env.example backend/.env ``` 2. Ajuster les variables d'environnement si nécessaire ## Dépendances - **Go** : 1.21+ - **PostgreSQL** : 16+ avec PostGIS - **Redis** : 7+ - **Zitadel** : dernière version Toutes les dépendances sont gérées via Docker Compose (voir `docker-compose.yml` à la racine).