PD-13 — Plan d'implémentation¶
📚 Navigation User Story
| Document | | | ---------- | -- | | 📋 [Spécification](PD-13-specification.md) | | | 🛠️ **Plan d'implémentation** | *(ce document)* | | ✅ [Critères d'acceptation](PD-13-acceptability.md) | | | 📝 [Retour d'expérience](PD-13-rex.md) | | [← Retour à backend-core](../PD-186-epic.md) · [↑ Index User Story](index.md)Objectif¶
Initialiser le projet backend NestJS avec la configuration de base, la structure modulaire et les outils de qualité.
Choix techniques retenus¶
- Framework : NestJS 10.x
- Runtime : Node.js 20 LTS
- Langage : TypeScript 5.x strict
- Tests : Jest + Supertest
- Qualité : ESLint + Prettier + SonarQube
- CI/CD : GitLab CI
Architecture ciblée¶
ProbatioVault-backend/
├── src/
│ ├── app.module.ts # Module racine
│ ├── app.controller.ts # Health check
│ ├── app.service.ts # Service de base
│ ├── main.ts # Bootstrap
│ ├── config/ # Configuration
│ ├── common/ # Guards, filters, pipes
│ │ ├── decorators/
│ │ ├── filters/
│ │ ├── guards/
│ │ ├── interceptors/
│ │ └── pipes/
│ ├── database/ # Configuration DB
│ └── modules/ # Modules métier
├── test/ # Tests e2e
├── nest-cli.json
├── tsconfig.json
└── .gitlab-ci.yml
Découpage technique¶
Phase 1 : Initialisation NestJS¶
nest new probatiovault-backend- Configurer TypeScript strict mode
- Configurer paths aliases (@modules, @common, etc.)
- Ajouter .nvmrc avec version Node.js 20
Phase 2 : Configuration¶
- Installer @nestjs/config
- Créer config/ avec modules :
database.config.tssecurity.config.tsstorage.config.ts- Configurer validation Joi des env vars
- Créer .env.example
Phase 3 : Common utilities¶
HttpExceptionFilter: Format erreurs standardiséLoggingInterceptor: Logs requêtes/réponsesValidationPipe: Validation DTO avec class-validatorJwtAuthGuard: Protection routes (préparation)
Phase 4 : Health checks¶
- Installer @nestjs/terminus
- Créer HealthController :
/health: Status global/health/db: Status PostgreSQL/health/ready: Readiness probe
Phase 5 : Documentation API¶
- Installer @nestjs/swagger
- Configurer SwaggerModule
- Documenter endpoints existants
- Exposer sur
/api/docs
Phase 6 : Tests¶
- Configurer Jest avec preset @nestjs/testing
- Créer tests unitaires app.service.spec.ts
- Créer tests e2e app.e2e-spec.ts
- Configurer coverage ≥ 80%
Phase 7 : CI/CD¶
- Créer .gitlab-ci.yml :
- lint : eslint + prettier
- test : jest --coverage
- build : nest build
- sonar : analyse qualité
- Configurer variables CI
Points de vigilance¶
- Env vars : Jamais de secrets en dur, utiliser Vault
- Logging : Jamais de données sensibles dans les logs
- Swagger : Désactiver en production si nécessaire
- TypeScript : Maintenir strict mode
Hors périmètre¶
- Configuration TypeORM (→ PD-14)
- Authentification SRP (→ PD-24)
- Modules métier (→ autres US)