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 pour les détails de l'architecture modulaire.
Commandes
Depuis la racine du monorepo :
# 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
-
Copier
.env.exampleen.env:cp backend/.env.example backend/.env -
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).