Setup local
Guide d'installation et de configuration de l'environnement de developpement local pour Place API.
Setup local
Pre-requis
| Outil | Version minimale | Utilisation |
|---|---|---|
| .NET SDK | 10.0 | Build et execution de l'API |
| Docker | 20+ | PostgreSQL, Testcontainers, Mailpit |
| Node.js | 18+ | Husky (pre-commit hooks), commitlint |
| Git | 2.30+ | Controle de version |
Verifier les pre-requis
dotnet --version # 10.0.x
docker --version # Docker version 20+
node --version # v18+
git --version # git version 2.30+
Clone et restauration
1. Cloner le depot
git clone <url-du-depot> place-api
cd place-api
2. Restaurer les outils .NET
dotnet tool restore
3. Installer les dependances Node.js (Husky)
npm install
Cela installe Husky et configure les hooks pre-commit pour enforcer les conventional commits.
4. Restaurer les packages NuGet
dotnet restore
5. Build de verification
dotnet build
Configuration de l'environnement
Variables d'environnement
Copier le fichier .env.example en .env et remplir les valeurs :
cp .env.example .env
Variables principales
| Variable | Description | Exemple |
|---|---|---|
POSTGRES_USER | Utilisateur PostgreSQL | place_admin |
POSTGRES_PASSWORD | Mot de passe PostgreSQL | strong_password |
DATABASE_CONNECTION_STRING | Connexion Identity DB | Server=postgres;Port=5432;... |
AUDIT_CONNECTION_STRING | Connexion Audit DB | Server=postgres;Port=5432;... |
HANGFIRE_CONNECTION_STRING | Connexion Hangfire DB | Server=postgres;Port=5432;... |
JWT_PRIVATE_KEY_BASE64 | Cle privee RSA en base64 | <rsa-key-base64> |
JWT_ISSUER | Issuer JWT | https://your-domain.com |
JWT_AUDIENCE | Audience JWT | place-api |
REFRESH_TOKEN_PEPPER | Secret pour le hachage des refresh tokens | <random-secret> |
Configuration applicative
Le fichier src/Api/appsettings.json contient la configuration par defaut :
{
"PostgresOptions": {
"ConnectionString": "Server=localhost;Port=5432;Database=identity;User Id=postgres;Password=postgres"
},
"JwtOptions": {
"Issuer": "http://localhost:5000",
"Audience": "booking-api",
"AccessTokenLifetimeMinutes": 60,
"RefreshTokenLifetimeMinutes": 43200
},
"PasswordPolicy": {
"MinLength": 8,
"HistoryCount": 5,
"PasswordExpiryDays": 90,
"EnforcePasswordExpiry": true
},
"SessionOptions": {
"MaxActiveSessions": 5,
"EnforceSessionBinding": true
}
}
Base de donnees
Option 1 : Avec Aspire (recommande)
Aspire orchestre automatiquement PostgreSQL, Mailpit et l'API :
dotnet run --project src/Aspire/src/AppHost/AppHost.csproj
Aspire demarre :
- PostgreSQL 17 avec 5 bases de donnees (identity, audit, messaging, hangfire, persist-message)
- Mailpit pour la capture d'emails locaux (UI sur
http://localhost:8025) - Place API sur
http://localhost:5000ethttps://localhost:5001 - Place Admin Web sur
http://localhost:5175(via Bun)
Le dashboard Aspire est accessible pour monitorer tous les services.
Option 2 : PostgreSQL via Docker
Demarrer PostgreSQL manuellement :
docker run -d \
--name place-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-p 5432:5432 \
postgres:17
Creer les bases de donnees :
docker exec -it place-postgres psql -U postgres -c "CREATE DATABASE identity;"
docker exec -it place-postgres psql -U postgres -c "CREATE DATABASE audit;"
docker exec -it place-postgres psql -U postgres -c "CREATE DATABASE messaging;"
docker exec -it place-postgres psql -U postgres -c "CREATE DATABASE hangfire;"
docker exec -it place-postgres psql -U postgres -c "CREATE DATABASE persist_message;"
Appliquer les migrations
Les migrations sont appliquees automatiquement au demarrage de l'application. Pour les appliquer manuellement :
# Identity
dotnet ef database update \
--project src/Modules/Identity/Identity \
--startup-project src/Api \
--context IdentityContext
# Audit
dotnet ef database update \
--project src/Modules/Audit/Audit \
--startup-project src/Api \
--context AuditContext
# Messaging (si migrations presentes)
dotnet ef database update \
--project src/Modules/Messaging/Messaging \
--startup-project src/Api \
--context MessagingContext
Donnees de seed
Le module Identity seed automatiquement :
- Un utilisateur administrateur (configure dans
IdentityDataSeeder) - Des roles par defaut
- Des donnees de test (en environnement Development)
Execution de l'API
Avec Aspire (recommande)
dotnet run --project src/Aspire/src/AppHost/AppHost.csproj
Directement
dotnet run --project src/Api/Api.csproj
L'API est disponible sur :
- HTTP :
http://localhost:5000 - HTTPS :
https://localhost:5001
URLs utiles
| URL | Description |
|---|---|
http://localhost:5000/swagger | Swagger UI |
http://localhost:5000/scalar/v1 | Scalar API documentation |
http://localhost:5000/hangfire | Dashboard Hangfire |
http://localhost:5000/health | Health check endpoint |
http://localhost:5000/alive | Liveness probe |
http://localhost:8025 | Mailpit UI (avec Aspire) |
Mode debug
En mode developpement, l'endpoint GET /debug/endpoints liste toutes les routes enregistrees.
Generer une cle JWT RSA
Pour le developpement local, generer une paire de cles RSA :
# Generer la cle privee
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
# Encoder en base64
cat private.pem | base64 | tr -d '\n'
Placer la valeur base64 dans JwtOptions:PrivateKeyBase64 ou la variable d'environnement JWT_PRIVATE_KEY_BASE64.
Configuration email (dev)
Avec Aspire
Aspire demarre automatiquement Mailpit, un serveur SMTP de capture. Tous les emails envoyes par l'application sont interceptes et consultables sur http://localhost:8025.
Sans Aspire
Configurer un serveur SMTP local (ex: Mailpit standalone) :
docker run -d \
--name mailpit \
-p 1025:1025 \
-p 8025:8025 \
axllent/mailpit
La configuration par defaut dans appsettings.json pointe vers localhost:1025.
REST Client
Le fichier booking.rest a la racine du projet contient des requetes pre-construites pour VS Code REST Client, facilitant le test des endpoints.