Concevoir une marketplace multi-vendeurs est un exercice d'architecture complexe. Au-delà de la simple mise en relation offre/demande, il faut gérer un écosystème complet : catalogue produits, commandes, paiements, vérification des vendeurs, messagerie, notifications, feed social et dashboards. Voici comment j'aborde cette architecture en m'appuyant sur les leçons tirées de Bilengi Marketplace.
1. Le noyau : le modèle multi-vendeurs
Contrairement à un e-commerce classique où un seul vendeur gère tout le catalogue, une marketplace doit isoler proprement les données de chaque vendeur. Chaque vendeur possède son propre espace, ses produits, ses commandes et ses statistiques. La première décision architecturale est de choisir entre un modèle de bases de données séparées par vendeur ou un modèle partagé avec filtrage strict par vendor_id.
Le modèle partagé avec colonne vendor_id sur chaque table est généralement plus adapté aux marketplaces de taille moyenne. Il simplifie les jointures et les requêtes cross-vendor nécessaires au dashboard admin, tout en permettant un filtrage rigoureux au niveau des requêtes côté vendeur. L'utilisation d'un ORM comme Drizzle ou Prisma avec des scopes.rowLevelSecurity rend cette isolation transparente.
2. Gestion du catalogue et des produits
Le catalogue est le cœur de la marketplace. Chaque vendeur ajoute, modifie et supprime ses produits. La structure typique comprend :
- Produits — titre, description, prix, catégories, attributs variables (taille, couleur…), images multiples
- Catégories et sous-catégories — arbre hiérarchique avec slugs pour le SEO
- Inventaire — gestion des stocks par variante, alertes de rupture
- Modération — validation avant publication pour garantir la qualité du catalogue
L'upload d'images doit passer par un service de stockage objet (S3 ou Cloudflare R2) avec transformation automatique des images pour différentes résolutions. Un pipeline de traitement redimensionne les images à la volée selon les besoins (thumbnail, galerie, zoom).
3. Le parcours de commande
Le flux de commande dans une marketplace multi-vendeurs est plus complexe que dans un e-commerce standard. Une commande peut contenir des produits provenant de plusieurs vendeurs, ce qui impose de :
- Spliter la commande en sous-commandes par vendeur lors de la validation
- Gérer les paiements — encaisser le montant total, puis répartir les fonds après commission
- Calculer les frais — commission marketplace sur chaque transaction
- Suivre la livraison — chaque vendeur gère sa propre expédition
L'utilisation de TanStack Query côté frontend permet de gérer proprement le cache des états de commande et les mises à jour optimistes quand un vendeur change le statut d'une commande.
4. Paiements et KYC
Le système de paiement doit gérer deux flux distincts : le paiement de l'acheteur et le virement au vendeur. Pour le marché africain, il faut intégrer mobile money (M-Pesa, Airtel Money) en plus des cartes bancaires. Le KYC (Know Your Customer) est essentiel pour les vendeurs : vérification d'identité, documents commerciaux, et validation avant activation du compte vendeur.
Les données sensibles de paiement ne doivent jamais transiter par le serveur applicatif. L'utilisation de sessions de paiement côté client (Stripe Checkout, ou équivalent local) garantit la conformité PCI-DSS.
5. Messagerie, notifications et feed social
La messagerie entre acheteurs et vendeurs est un élément clé de l'expérience. Elle doit supporter les conversations en temps réel, le partage de fichiers et l'historique. Côté notifications, il faut gérer les alertes email, SMS et push pour chaque événement pertinent : nouvelle commande, message reçu, changement de statut, promotion.
Le feed social — mur d'activité montrant les nouveaux produits, promotions et actualités des vendeurs suivis — ajoute une dimension engagement. Le infinite scroll avec TanStack Query et un système de pagination par curseur assure des performances optimales même avec des milliers de produits.
6. Dashboards vendeur et admin
Le dashboard vendeur doit offrir une vue claire de ses ventes, revenus, produits les plus performants et avis clients. Le dashboard admin va plus loin avec les métriques globales de la marketplace : volume de transactions, taux de conversion, vendeurs actifs, litiges en cours.
La construction de ces dashboards avec des composants réutilisables (graphiques, cartes KPI, tableaux triables) est grandement simplifiée par un design system cohérent. Les graphiques peuvent être générés côté serveur ou avec une bibliothèque légère côté client.
7. Architecture technique recommandée
Pour une telle plateforme, je recommande :
- Frontend : Next.js (SSR/SSG pour le SEO), Tailwind CSS v4, shadcn/ui pour les composants UI, TanStack Query pour la gestion des données asynchrones, Zustand pour le state global
- Backend : Node.js avec une API REST structurée, Drizzle ORM pour les requêtes PostgreSQL, authentification JWT avec refresh tokens
- Infrastructure : Docker Compose en développement, Traefik comme reverse proxy, PostgreSQL sur Neon ou en conteneur, stockage S3/R2 pour les fichiers
- CI/CD : GitHub Actions pour les tests et déploiements automatisés
Conclusion
Une marketplace multi-vendeurs est un projet d'architecture ambitieux qui touche à tous les aspects du développement logiciel : bases de données relationnelles, systèmes de paiement, temps réel, stockage de fichiers, sécurité et performance. L'essentiel est de bien séparer les responsabilités par domaine (catalogue, commandes, paiements, utilisateurs) et de construire par couches, en commençant par le noyau avant d'ajouter les fonctionnalités transversales comme les notifications ou le feed social.
