Fieldbook
Une application de chantier qui continue de fonctionner là où il n’y a pas de réseau.
- Note
- Nom et image de marque modifiés
- Technologies
- React Native · TypeScript · WatermelonDB · Redux Toolkit
- Statut
- En production sur iOS et Android
Le problème
Sur un chantier, la connexion va et vient. Les équipes ont quand même besoin des derniers plans, des tâches et des formulaires, et prennent des photos et remplissent des rapports dans des sous-sols et sur des toits.
Chaque changement doit finir par arriver au bureau, dans le bon ordre, sans se perdre ni s’appliquer deux fois.
Ce que fait l’application
Comment ça fonctionne
Chaque module sépare les règles d’affaires du stockage et des écrans. Les lectures viennent toujours de la base locale; le réseau ne sert qu’à alimenter cette base ou à vider la file des changements locaux.
Dans un module
- Requêtes réactives avec RxJS
- Résolution des dépendances
- Règles d’affaires seulement
- Aucune dépendance au framework
- Implémentent les interfaces du domaine
- La source de vérité sur l’appareil
Synchronisation
- Intentions ordonnées
- Relance ou correction depuis l’inspecteur
- Applique les changements
- Renvoie les identifiants actifs par module
- Créations et mises à jour en un lot
- Supprime ce que le serveur ne liste plus
Décisions clés
- Des couches strictes, imposées par le linterChaque module a ses couches domaine, données et présentation, et ESLint bloque toute importation qui contourne son point d’entrée public. La règle tient même sous la pression des échéances.
- Le serveur liste ce qui existe; l’appareil supprime le resteChaque récupération renvoie tous les identifiants actifs, et le client retire les lignes locales absentes. Aucun journal de suppressions requis côté serveur.
- Les écritures sont des événementsLes changements hors ligne sont conservés comme des intentions ordonnées, pas comme des lignes modifiées à comparer plus tard. Ils sont donc visibles, relançables et faciles à comprendre.
- L’injection de dépendances pour des tests rapidesLes cas d’utilisation et les dépôts sont enregistrés avec tsyringe : les règles d’affaires s’exécutent dans de simples tests Node, sans appareil ni simulateur.
- Respecter le forfait de donnéesUn réglage « Wi-Fi seulement » est vérifié avant toute synchronisation de module, avec la connectivité et la validité de la session.
Où en est le projet
Aujourd’hui
En production sur l’App Store et Google Play, publiée après revue de code, préproduction et assurance qualité sur les versions déployées.
À propos de cette étude de cas
Le nom du produit, l’entreprise, les identifiants et les adresses ont été changés. Un échantillon de code anonymisé est disponible sur demande.