Le SIM Backend est l’API REST NestJS 11 / TypeScript de GLOBAL SIM GROUP. Il dessert tous les modules métier — Résidence, Market, Pressing, Restaurant, Salle de fête, Facturation, Finances et RH — sur une seule base PostgreSQL via Kysely et des types générés.
Le contrat d’architecture et la frontière d’accès PostgreSQL typée
Le lancement de l’API en local
L’accès aux données avec Kysely, les types générés et la frontière de transaction d’audit
L’authentification, la rotation des refresh tokens JWT et le RBAC
Les conventions API : contrôleurs, DTO, validation et gestion d’erreurs
Les modules métier et leurs routes
Les intégrations : Redis, S3/MinIO, PDF, Prometheus, BullMQ
L’exploitation, Docker, le déploiement et l’invariant db:verify
Les tests avec Jest et les tranches sur base réelle
Les recettes du cookbook pour les tâches courantes du contributeur
pnpm db:verify # migre la base voisine, régénère generated.ts, compile, teste
pnpm start:dev # rechargement à chaud sur http://localhost:3000
# Swagger sur http://localhost:3000/docs
Principe
Mise en œuvre
Frontière de types générés
src/db/generated.ts est produit par dbgen/dbgen.mjs depuis PostgreSQL.
Pas d’ORM
Query builder Kysely ; repositories explicites sans classe de base.
Propagation de l’audit
Chaque écriture s’exécute dans scope.audit(user.id, async (a) => …) qui positionne sim.id_utilisateur.
Réseau en chaînes
bigint, numeric et les dates circulent en chaînes ; les services castent vers les types DB brandés.
Surface CRUD figée
DbAccess expose égalité + order/limit/offset ; les requêtes complexes sont des méthodes de repository explicites.
Le schéma appartient à sim-database
Les migrations sont Flyway, pas Nest ; pnpm db:verify garantit la fraîcheur de generated.ts.
Module
Rôle
core
Paramètres globaux
client
Référentiel client unique, pièces d’identité, contacts d’urgence
residence
Bâtiments, chambres, contrats, loyers, dépôts, courts séjours, portail
market
Produits, stock, ventes, codes-barres
pressing
Cycle de vie des commandes de pressing
restaurant
Plats, catégories, commandes
salle_fete
Réservations de salle d’événements
facturation
Services, factures, règlement
finances
Paiements, dépenses, caisses, consolidation
rh
Employés, présences, paie
dashboard
Tuiles agrégées
rapports
Rapports globaux, financiers, d’activité, RH
audit
Journal d’audit en lecture seule et masquage
auth / admin
JWT, RBAC, utilisateurs, rôles, permissions