D'une app Web Forms héritée à une plateforme de transferts
Nous avons remplacé le système ASP.NET d'un réseau qui encaisse des pesos en Colombie et paie des bolivars au Venezuela. La nouvelle plateforme compte 8 rôles, un MFA obligatoire et chaque mouvement d'argent dans des fonctions Postgres.
Nous avons remplacé le système ASP.NET Web Forms d'un réseau de transferts d'argent entre la Colombie et le Venezuela. La nouvelle plateforme couvre les 8 rôles de l'activité, du point de vente qui encaisse les espèces à l'opérateur qui paie en bolivars, avec un MFA obligatoire pour tous et chaque mouvement d'argent dans des fonctions de la base de données. Le premier commit date du 14 septembre 2026 ; fin octobre, la plateforme tournait avec les vrais utilisateurs du réseau.
- Client
- Réseau de transferts · Colombie → Venezuela
- Secteur
- Transferts d'argent et bureaux de change
- Où
- Colombie → Venezuela
- Année
- 2026
- Livrables
- Plateforme web à 8 rôles
- MFA TOTP et accès sur invitation
- Argent géré dans des fonctions Postgres
- Migration depuis SQL Server
- Rapports avec export XLSX et CSV
Un système Web Forms qui déplaçait de l'argent réel
Le réseau travaille avec deux maisons de change et des points de vente en Colombie qui encaissent des pesos en espèces. Le point de vente crée le transfert vers un compte bancaire ou vers Pago Móvil, et vend des recharges téléphoniques et des forfaits TV sur un solde prépayé en pesos. Au Venezuela, les opérateurs paient depuis les comptes en bolivars de la maison de change et joignent le justificatif de la banque.
Tout cela tournait sur une application ASP.NET Web Forms adossée à SQL Server. En septembre 2026, nous avons reçu l'app et une sauvegarde de sa base. Nous avons écrit le nouveau cœur de zéro, en gardant l'ancien système comme référence pour les règles métier et comme source de données.
L'argent ne bouge que dans la base de données
Chaque opération d'argent est une fonction SECURITY DEFINER dans Postgres (Supabase, région sa-east-1), et le navigateur n'écrit jamais un solde. Derrière, on trouve une comptabilité en partie double, un schéma d'audit qui n'accepte que des insertions, des clés d'idempotence pour qu'un double clic ne crée pas deux transferts et des codes de confirmation liés au hash de chaque requête. Le schéma tient en 73 migrations et l'app appelle une centaine de fonctions distinctes.
L'interface est en Next.js 16.4 avec React 19.2 et TypeScript, sur Vercel, avec 66 pages et 22 routes d'API. L'accès se fait uniquement sur invitation, avec MFA par app d'authentification (TOTP), 30 minutes d'inactivité au plus, 8 heures de session maximum et une seule session par utilisateur. Les justificatifs de paiement arrivent dans un bucket privé en quarantaine, passent par un scanner isolé et sont refusés si leur SHA-256 existe déjà. Les données de l'ancien système sont passées de SQL Server à Postgres avec un ETL écrit pour le projet.
-
01
Le point de vente crée le transfert
Il retrouve l'expéditeur et le bénéficiaire par numéro de pièce d'identité, choisit virement bancaire ou Pago Móvil et voit en direct le débit sur son solde et les bolivars reçus. Pago Móvil applique le taux × 1,01. Un code à 6 chiffres valide l'envoi, et un reçu sort avec son ID opérationnel.
-
02
L'opérateur paie au Venezuela
La file se met à jour toutes les 10 secondes et sépare le travail par maison de change. Ouvrir un ID le réserve à cet opérateur, qui choisit le compte source, téléverse le justificatif et voit la commission interbancaire de 0,3 % avant de payer.
-
03
8 rôles, 38 actions
Point de vente, paiements, administrateur, distributeur, distributeur senior, achats, super-vendeur et vendeur. Les 38 actions soumises à permission découlent du rôle, et un administrateur peut autoriser ou bloquer une action pour une personne sans toucher à son rôle.
-
04
132 tests automatisés
Vitest exécute 132 tests unitaires et de composants, tous au vert. Onze fichiers Playwright avec axe-core parcourent les flux complets et vérifient l'accessibilité, et GitHub Actions lance la CI.
Le projet en images
8 images · Ouvrez une image pour la voir en grand.
Six semaines du premier commit à l'exploitation
Entre le 14 septembre et le 29 octobre 2026, le dépôt a reçu 71 commits, avec des revues client les 6, 8 et 13 octobre. Fin octobre, la plateforme tournait avec les vrais utilisateurs du réseau, sur une URL accessible uniquement sur invitation.
Nous n'avons pas encore de chiffres de volume ni de délais de paiement publiables. Le client est confidentiel : les captures utilisent des données fictives et deux maisons de change inventées, Andina et Orinoco.
- Système ASP.NET Web Forms remplacé par une plateforme propriétaire
- 8 rôles et 38 actions soumises à permission, MFA obligatoire pour tous
- 73 migrations et une centaine de fonctions en base
- 132 tests automatisés, tous au vert
Les questions qu'on nous pose souvent
Pourquoi gérer l'argent dans des fonctions de la base de données ?
Parce qu'une seule fonction Postgres vérifie le solde, passe l'écriture en partie double et enregistre l'audit dans la même transaction. En cas d'échec, rien ne reste à moitié fait, et aucun navigateur ne peut écrire un solde.
Peut-on migrer les données de l'ancien logiciel de bureau de change ?
Oui. L'ETL du projet lit la sauvegarde .bak de SQL Server et la charge dans Postgres. Les soldes hérités servent de point de départ, et chaque mouvement suivant est passé par les nouvelles fonctions.
Le MFA est-il obligatoire pour tous les utilisateurs ?
Oui, pour les 8 rôles. L'utilisateur arrive sur invitation, choisit son mot de passe, active une app d'authentification par QR code ou clé manuelle, puis chaque connexion demande le code à 6 chiffres. Ce code n'est jamais envoyé par WhatsApp.
Des cas proches de celui-ci
En savoir plus
IB Group · Planet Fitness Mexique
Une app de réservation de salles, déployée dans trois bureaux
Une tablette à la porte de chaque salle et une console d'administration, synchronisées avec Exchange. D'abord pour Planet Fitness Mexique, puis pour Fashion Depot et Grimatex, d'IB Group : 22 salles sur trois déploiements.
En savoir plus →
En savoir plus
Sí, Jefa · Bureau d'agents IA
Sí, Jefa : 18 agents IA gèrent une entreprise de repas
Déjeuners de bureau à Madrid : un plat par jour à 8,90 € HT, commande close à 10 h. Sept surfaces dans une app et La Oficina, une scène 3D où 18 agents IA gèrent les opérations.
En savoir plus →
En savoir plus
Steel Bastion · Tower defense
Un tower defense militaire sur six fronts
Jeu Flutter pour Android et iOS : 60 missions face à des colonnes blindées, 10 armes, opération du jour et fronts de survie, sans publicité.
En savoir plus →Mettons-le en production
Racontez-nous votre défi. Nous répondons sous 24 heures ouvrées avec une première lecture honnête : si nous pouvons aider, nous dirons comment ; sinon, nous dirons qui peut.
Je réponds en personne. Pas de formulaires interminables ni de réponses automatiques.


