Legma Parfait
ENCV
Retour à l’archive
Mission 002

Statut : Pré-lancement

FasoCommerce

Une plateforme de gestion pensée pour le téléphone, où chaque commerce ou service active les modules dont son métier a besoin.

  • 15modules activables
  • 13profils métier
  • 207tests backend
  • 3rôles d’équipe
Écran de caisse après une vente encaissée, avec impression du ticket
Caisse
Cadre
Produit — SaaS
Rôle
Conception, architecture et développement full-stack
Période
Depuis juin 2026
Stack
Next.js · TypeScript · FastAPI · PostgreSQL · Docker
01

Contexte

Au Burkina Faso, beaucoup de commerces et de services gèrent ventes, stock, dettes clients et commandes WhatsApp à la main. Leur réalité : une connexion limitée, le paiement par Mobile Money et des métiers très différents.

02

Problème

Les logiciels existants supposent une connexion stable, un paiement par carte et un seul type de commerce. Une épicerie, un pressing, un restaurant et un garage ont pourtant des besoins différents.

03

Objectif

Une plateforme unique, pensée pour le téléphone, qui s’adapte au métier par modules — sans jamais bloquer une vente.

04

Architecture

Monolithe modulaire : un socle commun (équipe, paiements, clients, notifications) et des modules activables. Le code teste un module, jamais un métier : ajouter un métier revient à ajouter un profil, sans migration.

  1. InterfaceNext.js 15, React 19, TypeScript. Mobile d’abord, appels API relatifs proxifiés.
  2. APIFastAPI : routes minces, services partagés, une permission vérifiée par établissement.
  3. DonnéesPostgreSQL 16, schéma versionné par migrations Alembic.
  4. TâchesRedis et Celery pour les notifications et les traitements asynchrones.
  5. FichiersMinIO pour les images des produits.
  6. ProductionDocker Compose et Caddy (HTTPS automatique, en-têtes de sécurité).
05

Technologies

Frontend
  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • zustand
  • zod
Backend
  • Python
  • FastAPI
  • SQLAlchemy 2
  • Alembic
  • JWT
Données et infra
  • PostgreSQL
  • Redis
  • Celery
  • MinIO
  • Docker
  • Caddy
Qualité
  • pytest
  • Playwright
  • GitHub Actions
06

Fonctionnalités

  • Boutique en ligne et commandes par WhatsApp
  • Caisse, y compris hors ligne, synchronisée au retour du réseau
  • Stock, vente au carton ou à la pièce
  • Carnet de dettes (vente à crédit)
  • Promotions datées et carte de fidélité
  • Tickets pour imprimante thermique 58 / 80 mm
  • Paiement Mobile Money direct, CinetPay en option
  • Modules métier : restaurant, auto-école, garage, pressing, rendez-vous
  • Équipe, rôles personnalisés et journal d’activité
  • Factures, avoirs, fournisseurs, achats, dépenses, export Excel
  • Abonnements avec mode limité qui ne bloque jamais la caisse
07

Captures

Captures issues des tests automatisés, avec des données de démonstration.

08

Décisions techniques

Des modules, pas des métiers

Un profil (charcuterie, pressing…) n’est qu’un point de départ qui active des modules. Le commerçant peut ensuite les modifier, et un nouveau métier ne demande aucune migration.

Des permissions, pas des rôles

Chaque endpoint demande une permission précise sur un établissement. Les rôles d’équipe (gérant, caissier…) ne sont que des ensembles de permissions.

La vente n’est jamais bloquée

Réseau coupé ou abonnement impayé : la caisse continue. Une vente hors ligne est enregistrée avec son heure réelle au retour de la connexion.

Des jetons hors de portée du JavaScript

Jetons en cookies httpOnly, jamais dans le localStorage, et un en-tête anti-CSRF exigé pour les requêtes sensibles.

09

Difficultés

Une connexion limitée

Interface légère, pensée pour le téléphone, et caisse capable de fonctionner sans réseau.

Protéger la connexion

Tentatives limitées par numéro et par adresse IP réelle, fournie par le proxy et non par le client.

La conformité dès la conception

Pages légales, registre des traitements, aucun traceur sans consentement, et des tests d’accessibilité automatisés (WCAG 2.1 AA).

10

Résultat

Pré-lancement : 15 modules, 207 tests backend automatisés, tests end-to-end et d’accessibilité, intégration continue. La grille d’abonnement est définie et reste à valider auprès de commerçants.

11

Évolution possible

  • Tests terrain avec des commerçants
  • Application mobile Flutter sur la même API
  • Assistant de commande sur WhatsApp
  • Nouveaux profils métier
Mission suivante · 003ForexSaaS →