Aller au contenu

EPIC — Backend Core sécurisé et modulaire (PD-186)

User Stories

ID Titre Spec
PD-13 PD-13 — Initialiser projet NestJS avec structure m... 📋
PD-14 PD-14 — Configurer connexion PostgreSQL avec TypeO... 📋
PD-15 PD-15 — Créer schéma DB users avec RLS 📋
PD-16 PD-16 — Créer schéma vault_secure.documents 📋
PD-17 📄 SPÉCIFICATION CANONIQUE CONTRACTUELLE 📋
PD-21 📄 SPÉCIFICATION CANONIQUE CONTRACTUELLE 📋
PD-3 PD-3 — Garanties contractuelles Redis/BullMQ 📋

Intention

Construire le cœur applicatif backend de ProbatioVault, en fournissant une base technique robuste, modulaire et sécurisée, sur laquelle l'ensemble des fonctionnalités probatoires, cryptographiques et métier pourront s'appuyer de manière cohérente et évolutive.

Cette EPIC définit le socle d'exécution logique du produit : API, base de données, sécurité applicative, asynchronisme et audit.

Problème de fond

ProbatioVault n'est pas une API classique : elle manipule des opérations critiques (chiffrement, preuves, journaux probatoires), soumise à des contraintes fortes de sécurité, de performance et de conformité.

Les problématiques structurantes sont :

  • nécessité d'une architecture backend modulaire et testable ;
  • gestion fine des accès aux données via isolation logique (RLS PostgreSQL) ;
  • besoin de journalisation append-only pour audit et preuve ;
  • orchestration fiable des traitements asynchrones ;
  • exposition d'APIs sécurisées (CORS, headers, rate limiting) ;
  • support de scénarios complexes (multi-device, conflits, synchronisation) ;
  • exigence d'une traçabilité complète des opérations sensibles.

Sans un backend core rigoureusement conçu, les garanties zero-knowledge et probatoires seraient intenables.

Solution de principe

L'EPIC BACKEND-CORE met en place un backend NestJS structuré par domaines, reposant sur les principes suivants :

  • Architecture modulaire NestJS (modules métiers, transverses et techniques) ;
  • Accès base de données PostgreSQL via TypeORM, avec schémas cloisonnés ;
  • Activation systématique du Row-Level Security (RLS) ;
  • Séparation claire entre données applicatives et données probatoires ;
  • Journalisation append-only des événements critiques ;
  • Traitement asynchrone via BullMQ pour opérations longues ou sensibles ;
  • Sécurisation de l'API (CORS, security headers, rate limiting Redis) ;
  • Configuration centralisée et validée dès le bootstrap ;
  • Support natif du multi-device et de la synchronisation contrôlée.

Le backend devient ainsi un orchestrateur fiable, jamais détenteur de secrets en clair.

Invariants

  • Toute donnée sensible est protégée par des règles d'accès explicites (RLS).
  • Les journaux d'audit sont append-only et non modifiables.
  • Aucune opération cryptographique critique n'est effectuée sans journalisation.
  • Les traitements longs passent obligatoirement par des jobs asynchrones.
  • La configuration applicative est validée au démarrage.
  • Le backend ne doit jamais exposer de données en clair non nécessaires.

User Stories associées

Impacts transverses

  • Architecture Définition de la structure backend, des frontières de modules et des flux de données internes.

  • Sécurité RLS, audit logs, rate limiting, headers de sécurité, réduction de la surface d'attaque.

  • UX Indirect : fiabilité des opérations, cohérence multi-device, réduction des erreurs et conflits visibles.

  • Mobile / Clients Dépendance à la stabilité des APIs et à la gestion des synchronisations.

  • Juridique Traçabilité des actions, preuve des opérations sensibles, support d'audit et d'expertise judiciaire.

  • Exploitation Supervision des jobs, monitoring des erreurs, capacité de diagnostic fin grâce aux logs structurés.

Références

  • Architecture Executive ProbatioVault — v4.x
  • Cahier d'Architecture Technique (Tech Lead)
  • Spécifications Backend & Sécurité Applicative
  • Normes : RGPD, OWASP ASVS, bonnes pratiques API sécurisées
  • Décisions d'architecture (ADR) liées au backend core