articonnect.fr · « le Doctolib des artisans » · marketplace de services
Une marketplace d'artisans, pilotée par un fondateur non technique. À mon arrivée : deux applications Flutter en production, toute la logique côté client et pas de cahier des charges. J'ai d'abord extrait les règles métier du code existant, puis j'ai recommandé par écrit au fondateur de reconstruire : une API (Rust, Axum), puis l'application web Next.js, puis deux applications React Native, l'une pour les particuliers, l'autre pour les professionnels. La nouvelle plateforme reste compatible avec les applications déjà installées chez les clients.
Équipe : le fondateur, non technique, et le développeur des applications d'origine.
Sans spécification, la seule vérité était le code en production. Je l'ai fait lire par des agents IA pour en extraire les règles métier, puis j'en ai tiré les user stories.
Les utilisateurs ne pouvaient pas être forcés à mettre à jour. La nouvelle API a été conçue pour que chaque écriture reste lisible par toutes les versions en circulation.
Les deux applications lisaient et écrivaient la base en direct, avec la logique métier dupliquée entre l'application pro et l'application particulier. Rafistoler aurait gardé les deux copies. J'ai recommandé par écrit au fondateur de reconstruire, avec les options chiffrées, puis j'ai réimplémenté les fonctionnalités à l'identique, à partir de user stories et sans le code mort : d'abord l'API, puis l'application web Next.js, puis les deux applications React Native.
API Rust en architecture hexagonale. Son contrat OpenAPI génère le client partagé par le web Next.js et les deux applications React Native : une seule logique métier au lieu d'une copie par application, et le compilateur signale les écarts entre l'API et les écrans. La CI échoue si le contrat dérive du code.
Les nouvelles applications React Native reprennent la place des anciennes sous les mêmes identifiants : les utilisateurs gardent leur application, ses notes et ses avis. Un contrôle de version bloque les versions trop anciennes, mais laisse passer un utilisateur hors ligne.
Sentry et OpenTelemetry réglés pour qu'une panne fournisseur produise une seule alerte au lieu d'un flot d'erreurs.
Un contexte similaire ?
Planifier un échange