Étude de cas

FASOMARKET

Une plateforme de petites annonces pour le Burkina Faso : publier, rechercher, discuter avec le vendeur en temps réel et laisser un avis fiable, sur le web comme sur Android.

RôleConception et développement complets
StackReact, TypeScript, Tailwind, Supabase, Vite
ContexteProjet personnel, en ligne sur Vercel

La consultation des annonces est libre. La publication, les favoris et la messagerie demandent un compte.

Page d'accueil de FasoMarket : recherche, catégories et annonces récentes

LE DÉFI

Je voulais offrir une alternative numérique aux méthodes traditionnelles de vente et d'achat entre particuliers, adaptée au Burkina Faso : prix en FCFA, recherche par ville, contact direct par téléphone ou WhatsApp.

Le défi était de garder une plateforme simple pour les utilisateurs tout en la rendant fiable : des avis crédibles, une modération efficace et une interface qui reste fluide sur mobile.

CE QUE FAIT L'APPLICATION

  • Publication d'annonces avec plusieurs images, catégorie, ville, état et prix en FCFA.
  • Recherche par mots-clés, catégorie, ville, prix et état, avec tri et pagination.
  • Favoris et profils vendeurs publics, avec leurs annonces.
  • Contact par téléphone, WhatsApp ou messagerie intégrée, y compris pour les visiteurs non connectés.
  • Avis sur les vendeurs, réservés aux acheteurs qui ont échangé avec eux.
  • Tableau de bord vendeur : annonces, vues et statistiques.
  • Signalements, sanctions graduées et espace d'administration en 5 sections.

DÉCISIONS TECHNIQUES

Des avis qui reposent sur de vrais échanges

Un acheteur ne peut noter un vendeur qu'après avoir échangé des messages avec lui. La vérification se fait avant l'ouverture du formulaire d'avis, ce qui limite les faux avis sans alourdir le parcours.

Une messagerie en temps réel

Chaque annonce a son canal Supabase Realtime, avec indicateur de frappe et présence. Les visiteurs sans compte peuvent aussi écrire grâce à des messages invités.

La base de données fait le gros du travail

Des index ciblés sur les messages, favoris et vues, des fonctions SQL pour compter les catégories et incrémenter les vues, et des vues matérialisées pour les statistiques d'administration. Côté interface : pagination et cache des catégories.

Des images adaptées aux connexions lentes

Avant l'envoi, chaque photo est déclinée en miniature (200 px), taille moyenne (800 px) et grande taille (1600 px), pour pouvoir servir la taille adaptée à chaque écran.

Une modération pensée pour une petite équipe

Une file unique regroupe signalements, annonces et utilisateurs, avec filtres, actions rapides et actions de masse. Le journal des décisions est enregistré en base, avec un repli local si la table est indisponible.

Installable comme une vraie application

Un manifeste, un service worker et une page hors ligne rendent le site installable (PWA). Il est aussi empaqueté en application Android grâce à une Trusted Web Activity.

APERÇU

ARCHITECTURE

  1. 01ClientApplication React, installable en PWA et empaquetée en Android (TWA).
  2. 02VercelHébergement de l'application Vite, avec repli sur index.html pour le routage.
  3. 03SupabaseAuthentification, PostgreSQL, stockage des images et canaux temps réel.
  4. 04Scripts SQLIndex, fonctions et vues matérialisées, versionnés dans le dépôt.

MISE EN LIGNE ET PERFORMANCE

  • TypeScript et ESLint sur l'ensemble du code.
  • Déploiement continu sur Vercel à chaque push.
  • Service worker, manifeste d'installation et page hors ligne pour la PWA.
  • Digital Asset Links et manifeste TWA pour l'application Android.
  • Scripts SQL numérotés (index, fonctions, vues matérialisées) à exécuter dans Supabase.

Suite

UN PROJET
À DISCUTER ?