MamaShop
Une app mobile de gestion pour petits commerces d'Afrique de l'Ouest — pensée pour fonctionner même sans réseau.
Contexte
Application mobile (React Native / Expo) de gestion de commerce, avec trois espaces de travail isolés selon le rôle : Gérant, Agent de terrain et Diaspora.
Le problème
Les petits commerces suivent leur stock, leurs ventes et leurs crédits clients de tête ou sur papier. La connexion internet est instable sur le terrain, et plusieurs personnes (le gérant, l'agent qui vend, le proche à l'étranger qui finance) ont besoin de vues très différentes sur la même activité.
L'approche
- —Une seule app, trois espaces séparés par rôle (groupes de routes Expo Router + tiroir animé persistant).
- —Backend Supabase (PostgreSQL, Realtime, Auth) avec une couche services unique — aucun appel base dans les composants.
- —Conception offline-first : l'app reste utilisable sans réseau et se synchronise à la reconnexion.
Décisions techniques
Les actions (vente, ajout de stock…) sont écrites localement dans une file AsyncStorage, puis rejouées vers Supabase à la reconnexion. La détection réseau passe par NetInfo, jamais par navigator.onLine.
Les opérations sensibles (create_sale, increment_stock, apply_credit_payment) sont des fonctions RPC PostgreSQL. Le stock reste cohérent même en cas de double envoi ou de sync différée.
Chaque rôle a son propre groupe de routes et ses écrans ; les composants partagés restent agnostiques du rôle. TypeScript strict et types partagés centralisés.
Résultat
- ✓Le gérant suit finances, marges et historique de ventes en temps réel.
- ✓Les agents de terrain continuent de vendre et d'enregistrer, même hors-ligne.
- ✓Base de code typée, testable (jest-expo) et organisée par responsabilités.