Aller au contenu

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

  1. nest new probatiovault-backend
  2. Configurer TypeScript strict mode
  3. Configurer paths aliases (@modules, @common, etc.)
  4. Ajouter .nvmrc avec version Node.js 20

Phase 2 : Configuration

  1. Installer @nestjs/config
  2. Créer config/ avec modules :
  3. database.config.ts
  4. security.config.ts
  5. storage.config.ts
  6. Configurer validation Joi des env vars
  7. Créer .env.example

Phase 3 : Common utilities

  1. HttpExceptionFilter : Format erreurs standardisé
  2. LoggingInterceptor : Logs requêtes/réponses
  3. ValidationPipe : Validation DTO avec class-validator
  4. JwtAuthGuard : Protection routes (préparation)

Phase 4 : Health checks

  1. Installer @nestjs/terminus
  2. Créer HealthController :
  3. /health : Status global
  4. /health/db : Status PostgreSQL
  5. /health/ready : Readiness probe

Phase 5 : Documentation API

  1. Installer @nestjs/swagger
  2. Configurer SwaggerModule
  3. Documenter endpoints existants
  4. Exposer sur /api/docs

Phase 6 : Tests

  1. Configurer Jest avec preset @nestjs/testing
  2. Créer tests unitaires app.service.spec.ts
  3. Créer tests e2e app.e2e-spec.ts
  4. Configurer coverage ≥ 80%

Phase 7 : CI/CD

  1. Créer .gitlab-ci.yml :
  2. lint : eslint + prettier
  3. test : jest --coverage
  4. build : nest build
  5. sonar : analyse qualité
  6. 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)