Prise en main
Le backend SIM est une API NestJS 11 / TypeScript 5.7. Il attend une base PostgreSQL, Redis (optionnel en dev) et un runtime Node.js 22 compatible.
Prérequis
Section intitulée « Prérequis »- Node.js 22 LTS
- pnpm 11.9+ (le projet utilise pnpm)
- PostgreSQL 18 (ou le stack Docker local
sim-database) - Redis 7 (optionnel en local ; un repli en mémoire est disponible)
- MinIO ou S3 (optionnel en local ; les uploads utiliseront S3 en production)
Structure du dépôt
Section intitulée « Structure du dépôt »sim-backend/├── package.json├── pnpm-workspace.yaml├── nest-cli.json├── tsconfig.json├── tsconfig.build.json├── Dockerfile├── docker-compose.local.yml├── docker-compose.dev.yml├── docker-compose.prod.yml├── docker-entrypoint.sh├── scripts/│ └── db-verify.mjs # chaîne complète migration -> generated.ts -> tsc -> test├── dbgen/│ ├── dbgen.mjs # générateur de generated.ts│ └── dbgen.metadata.json # surcharges de métadonnées du générateur├── src/│ ├── main.ts│ ├── app.module.ts│ ├── app.setup.ts│ ├── config/│ ├── db/│ ├── common/│ ├── auth/│ ├── admin/│ ├── core/│ ├── client/│ ├── residence/│ ├── market/│ ├── pressing/│ ├── restaurant/│ ├── salle_fete/│ ├── facturation/│ ├── finances/│ ├── rh/│ ├── dashboard/│ ├── rapports/│ ├── audit/│ ├── abonnement/│ ├── jobs/│ ├── health/│ ├── metrics/│ ├── redis/│ ├── s3/│ ├── uploads/│ └── pdf/└── test/ # harnais Jest e2e + stubs kysely/puppeteerConfiguration de l’environnement
Section intitulée « Configuration de l’environnement »- Copier
.env.examplevers.env. - Ajuster les paramètres PostgreSQL et Redis pour votre stack Docker local.
- Définir
NODE_ENV=developmentetSWAGGER_ENABLED=truepour l’exploration locale.
Variables clés :
| Variable | Rôle | Défaut / source |
|---|---|---|
NODE_ENV |
development, test, production |
development |
PORT |
Port HTTP | 3000 |
PGHOST, PGPORT, PGUSER, PGPASSWORD, PGDATABASE |
Connexion PostgreSQL | DB_DEFAULTS |
JWT_ACCESS_SECRET, JWT_REFRESH_SECRET |
Signature JWT (requis en production) | jetable en dev |
REDIS_URL |
Redis pour révocation de jetons / files / throttling | en mémoire si absent |
S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY |
Stockage objet | S3_DEFAULTS |
PUPPETEER_EXECUTABLE_PATH |
Binaire Chrome pour le rendu PDF | résolu automatiquement dans le Dockerfile |
Installer les dépendances
Section intitulée « Installer les dépendances »cd sim-backendpnpm installGénération et vérification de la base
Section intitulée « Génération et vérification de la base »Le backend exige que src/db/generated.ts soit en phase avec le catalogue PostgreSQL réel. Le chemin le plus simple est pnpm db:verify, qui :
- Migre
../sim-database(Flyway). - Régénère
src/db/generated.tsavecdbgen/dbgen.mjs. - Vérifie que le diff est vide (
git diff --exit-code -- src/db/generated.ts). - Exécute
tsc --noEmit. - Exécute
pnpm test. - Exécute
pnpm db:smoke. - Exécute
pnpm db:slice.
pnpm db:verifyPour ne régénérer que generated.ts après une migration :
pnpm db:genLancer l’API
Section intitulée « Lancer l’API »Développement avec rechargement à chaud :
pnpm start:devBuild et exécution de production :
pnpm buildpnpm start:prodExplorer l’API
Section intitulée « Explorer l’API »Quand SWAGGER_ENABLED=true, la spec OpenAPI est disponible sur :
http://localhost:3000/docsChemins de base :
/api/v1/*— API métier protégée/metrics— endpoint de scrape Prometheus/api/v1/health/live— sonde de vivacité/api/v1/health/ready— sonde de disponibilité (PostgreSQL + Redis)
Commandes courantes
Section intitulée « Commandes courantes »| Commande | Rôle |
|---|---|
pnpm lint |
ESLint 9 avec règles TypeScript strictes |
pnpm build |
Compilation tsc vers dist/ |
pnpm test |
Suites unitaires Jest (utilise test/kysely-stub.cjs) |
pnpm test:e2e |
Suites e2e Jest (voir test/jest-e2e.json) |
pnpm db:gen |
Régénère src/db/generated.ts |
pnpm db:check |
Échoue si generated.ts est périmé |
pnpm db:smoke |
Exécute src/db/smoke.ts contre la base réelle |
pnpm db:slice:core |
Exécute le script e2e Core sur base réelle |
pnpm security:audit |
pnpm audit --prod |
