Projets sélectionnés

Infrastructure financière

Ledger.

Quand chaque écriture doit être juste.

Une comptabilité en partie double avec invariants en base, historique immuable et soldes sûrs face à la concurrence.

Projet open source indépendant
TypeScriptFastifyPostgreSQL
ARCHITECTURE CONCEPTUELLE
  1. 01Clé d’idempotence
  2. 02Écriture équilibrée
  3. 03Verrouillage ordonné des comptes
  4. 04Contraintes en base
  5. 05Journal immuable

Le problème d’ingénierie

L’intégrité financière ne peut dépendre du respect de toutes les règles par chaque appelant. Doublons, retraits concurrents et écritures directes peuvent violer les hypothèses.

Ledger est un projet indépendant avec API TypeScript/Fastify, PostgreSQL et tableau de bord React. Les invariants critiques sont imposés par la base.

Une écriture atomique

L’API valide l’écriture et réclame une clé d’idempotence avec empreinte du contenu. Elle verrouille les comptes dans un ordre déterministe, calcule les soldes et insère les écritures dans une transaction. Un trigger différé revalide équilibre et devise au commit.

Répéter une requête réussie renvoie la transaction initiale. Un contenu différent avec la même clé crée un conflit. Un échec annule aussi la réclamation de la clé.

Argent, concurrence et historique

Les montants sont des entiers en unités mineures, transmis en strings pour préserver la précision. Les verrous sérialisent les conflits. L’historique ne se modifie pas : les corrections sont des contre-passations liées. La balance recalcule les soldes depuis les écritures.

Les tests documentés utilisent PostgreSQL réel pour les invariants, doublons et accès concurrents. Les mocks applicatifs ne prouvent pas les contraintes ni les verrous.

Garanties et limites

Le verrouillage pessimiste simplifie les conflits mais sérialise les comptes sollicités. Stocker solde et historique exige rapprochement. Authentification, isolation des tenants et outbox sont en roadmap. La démo est un modèle local ; les garanties réelles relèvent du service et de PostgreSQL.

Explorer le modèle en pratique.

Équilibré par conception

Comptabilisez un dépôt de 150,00 BRL puis répétez avec la même clé d’idempotence.

CLÉ D’IDEMPOTENCE deposit-demo-001
Dépôt illustratif en partie double
CompteDébitCrédit
Trésorerie opérationnelle0.00—
Portefeuille client—0.00
Prêt. Aucune transaction comptabilisée. Nombre de transactions : 0.
Modèle local déterministe. Le service réel impose ses invariants dans PostgreSQL.
POURSUIVRE L’EXPLORATIONConstellation Gate
Tous les projets sélectionnés