API métier centrale multi-applications
Un seul backend pour l'atelier, la location, les ventes, la facturation et la banque
Chiffres clés
- lignes de code
- ~37 000
- tests automatisés
- ~280
- modèles de données
- 44
- endpoints
- ~250
Contexte
L'atelier, la location, les ventes, la facturation, le rapprochement bancaire et l'inventaire devaient tourner sur un seul backend. Ce backend sert 7 applications internes, le site vitrine et la boutique en ligne.
Mon rôle
De la conception à l'exploitation, en autonomie complète.
Solution
Les routes sont organisées par application consommatrice : environ 250 endpoints, adossés à 44 modèles Prisma. L'API génère les devis en PDF et les fait signer en ligne par un lien à jeton unique. Elle émet aussi des demandes de paiement avec QR code de virement, relancées puis annulées automatiquement.
Les factures de service partent vers l'ERP sans bloquer l'action locale, et une passerelle de facturation idempotente sert la boutique. Le rapprochement bancaire tourne dans un worker thread, par correspondance floue. S'y ajoutent l'agenda, les documents, les e-mails transactionnels et la revalidation du cache du site public.
Fonctionnalités clés
Devis PDF signés en ligne
Le client signe son devis à distance, via un lien à jeton unique.
Paiement par QR code de virement
Demandes de paiement avec QR code EPC, relances et annulations automatiques.
Passerelle de facturation idempotente
La boutique en ligne peut rejouer une demande de facturation sans créer de doublon.
Rapprochement bancaire en arrière-plan
La correspondance floue tourne dans un worker thread, sans bloquer le traitement des requêtes.
Défis d'ingénierie
- 1
Verrous transactionnels PostgreSQL
Des advisory locks acquis dans un ordre constant écartent les interblocages.
- 2
Modèle et contrats stricts
44 modèles Prisma, 115 migrations et des contrats Zod stricts.
- 3
SSO OIDC côté serveur
PKCE, sessions HttpOnly, jetons chiffrés en base et back-channel logout.
- 4
Bascule d'authentification pilotée par la CI
Modes legacy, dual ou OIDC, basculables par la CI pour migrer sans perte d'accès.
Stack technique
- Backend
- Node.jsExpressTypeScriptZodWinstonnode-cron
- Data
- PrismaPostgreSQL 16
- Sécurité
- jose
- Intégrations
- @react-pdfsharpExcelJS
- Infra
- DockerGHCR
Un projet de cette envergure ?
Parlons de votre contexte : je vous dis franchement ce qui est faisable, et en combien de temps.