Tous les projets
Backend

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. 1

    Verrous transactionnels PostgreSQL

    Des advisory locks acquis dans un ordre constant écartent les interblocages.

  2. 2

    Modèle et contrats stricts

    44 modèles Prisma, 115 migrations et des contrats Zod stricts.

  3. 3

    SSO OIDC côté serveur

    PKCE, sessions HttpOnly, jetons chiffrés en base et back-channel logout.

  4. 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.