← Retour au blog
E-commercePublié le 25 mai 2026·15 min de lecture

Comment créer une Marketplace d'Artisans avec Lovable : Le Guide Pro Complet

Découvrez comment bâtir une marketplace multi-vendeurs haut de gamme pour artisans locaux avec Lovable, Supabase et Stripe Connect. Guide complet pour les makers de l'économie locale.

Art abstrait minimaliste aux tons terreux et dégradés doux représentant l'artisanat.

Aperçu du projet

Page d'accueil de la marketplace artisanale avec section héros et catégories d'artisanat.
Une page d'accueil haut de gamme présentant 'L'Atelier Local' avec une sélection de boutiques.
Tableau de bord artisan affichant les statistiques de vente et la gestion des produits.
Le tableau de bord permet aux artisans de suivre leurs revenus et de mettre en ligne de nouveaux articles facilement.
Expérience de paiement mobile pour un article fait main.
Un processus de paiement mobile épuré intégré avec Stripe pour des achats locaux sécurisés.

Le cas — Moderniser l'artisanat hyper-local

À l'ère du commerce électronique de masse, les artisans locaux peinent souvent à maintenir une présence numérique qui reflète la qualité de leur travail manuel. La "Place de Marché des Artisans Locaux" est une plateforme conçue pour combler le fossé entre l'artisanat traditionnel et les consommateurs numériques modernes.

Public cible

  1. Artisans indépendants : Menuisiers, céramistes, créateurs de bijoux et artistes textiles cherchant une vitrine numérique premium sans la complexité de Shopify ou les frais élevés d'Etsy.
  2. Consommateurs conscients : Individus à la recherche de produits locaux, uniques et de haute qualité, qui valorisent la transparence dans le processus de fabrication.

Le problème

Les places de marché traditionnelles sont surchargées, favorisant souvent des articles produits en série se faisant passer pour du "fait main". Les artisans manquent de temps et de compétences techniques pour gérer le SEO complexe, les passerelles de paiement et les systèmes d'inventaire sur plusieurs plateformes de médias sociaux.

La valeur ajoutée

Une marketplace "communautaire" où chaque artisan bénéficie d'une vitrine optimisée pour le SEO, de paiements Stripe intégrés et d'un tableau de bord simplifié pour gérer les commandes. La plateforme met l'accent sur l'histoire derrière chaque produit grâce à des médias riches et une communication directe artisan-client.


Fonctionnalités clés

  1. Vitrines d'artisans : Pages dédiées et personnalisables pour chaque créateur avec bio, photos d'atelier et galeries de produits.
  2. Filtrage avancé : Recherche par type d'artisanat, matériaux utilisés et proximité (rayon en km).
  3. Gestion des stocks en temps réel : Mises à jour automatiques des stocks et alertes de stock faible via Resend.
  4. Intégration Stripe Connect : Paiements fractionnés transparents entre la plateforme et l'artisan.
  5. Tableau de bord de suivi des commandes : Vue complète des statuts "En attente", "Expédié" et "Livré" pour l'acheteur et le vendeur.
  6. Histoires d'artisans : Une fonctionnalité de type blog au sein de la page produit pour présenter le processus de création.
  7. Avis dynamiques : Avis d'achats vérifiés avec téléchargement de photos.
  8. Facturation automatisée : Factures PDF professionnelles générées et envoyées automatiquement par e-mail lors de l'achat.

Stack & intégrations

  • Lovable Cloud : Hébergement de l'application principale, logique frontend (React/Vite) et chorégraphie backend.
  • Supabase : Base de données PostgreSQL, Authentification, Stockage (pour les images produits) et Edge Functions.
  • Stripe Connect : Pour gérer les paiements multi-vendeurs, vérifier l'identité des artisans et automatiser les virements.
  • Resend : E-mails transactionnels (confirmation de commande, mises à jour d'expédition, séquence de bienvenue).
  • API Mapbox/Google Maps : Pour la recherche géolocalisée d'ateliers locaux.

Prompts Lovable concrets

1. Design system & identité visuelle

Crée un design system sophistiqué et organique pour "L'Atelier Local", une place de marché artisanale haut de gamme.
Objectif : Établir une identité visuelle qui semble à la fois moderne et artisanale, en utilisant une esthétique "Craft & Minimalist".
Éléments UI :
- Typographie : Utilise 'Playfair Display' pour les titres élégants et 'Inter' pour le corps de texte propre et lisible.
- Palette de couleurs (HSL) : Définis des tokens sémantiques dans index.css. Primaire 'Terre' (25 30% 20%), Secondaire 'Argile' (20 40% 90%), Accent 'Or' (45 80% 50%), Fond 'Papyrus' (30 20% 98%).
- Composants : Personnalise les composants Shadcn UI avec des rayons doux (rounded-lg : 12px), des ombres subtiles (shadow-sm) et des bordures élégantes (border-clay-200).
- Textures : Ajoute une légère superposition de grain aux composants de carte pour imiter la texture du papier ou du bois.
- Gradients : Utilise des dégradés radiaux subtils (ex. du transparent à une lueur chaude et douce dans les coins).
Contraintes techniques : Assure un support complet du mode sombre avec un thème "Encre & Charbon" (Fond : 210 20% 10%). Utilise uniquement des variables HSL pour faciliter le changement de thème.
Critères de done : Un squelette de page d'accueil montrant des boutons, des cartes et des titres qui ressemblent à un magazine de boutique premium.

2. Schéma de base de données & RLS

Construis le schéma de base de données relationnelle pour une marketplace multi-vendeurs dans Supabase.
Objectif : Créer une structure robuste pour les produits, les vendeurs et les commandes avec une sécurité stricte.
Tables & Relations :
- 'profiles' : étend auth.users (id, full_name, avatar_url, role : vendor/customer).
- 'shops' : lié à un profil (id, name, bio, slug, stripe_connect_id, location_lat, location_lng).
- 'products' : lié à une boutique (id, name, description, price_cents, stock_quantity, category).
- 'orders' : (id, buyer_id, total_amount, status : pending/paid/shipped).
- 'order_items' : jointure entre commandes et produits (id, order_id, product_id, quantity, price_at_purchase).
Contraintes techniques : 
- Active la RLS sur toutes les tables. 
- Politiques : Les profils ne peuvent être mis à jour que par leur propriétaire. Les boutiques ne peuvent être modifiées que par le profil lié. Les produits peuvent être insérés/mis à jour uniquement par le propriétaire de la boutique. Les clients ne peuvent voir que leurs propres commandes.
- Ajoute des index sur les catégories de produits et les slugs de boutique.
Critères de done : Toutes les tables sont visibles dans l'explorateur Supabase avec les liens FK corrects et les politiques RLS actives.

3. Authentification & onboarding

Développe un flux complet d'authentification et d'onboarding artisan.
Objectif : Permettre aux utilisateurs de s'inscrire via Email ou Google et de choisir instantanément entre 'Acheter' ou 'Vendre'.
Éléments UI :
- Landing : Page de connexion/inscription unifiée avec switch.
- Étape d'onboarding 1 : Configuration du profil (Nom, Avatar).
- Étape d'onboarding 2 (Pour les vendeurs) : Formulaire de création de boutique (Nom de boutique, Sélection de catégorie, Bio, Ville).
- Redirections : Les clients vont vers le flux 'Marketplace' ; les vendeurs vont vers leur configuration de 'Tableau de Bord Vendeur'.
Contraintes techniques : Utilise Supabase Auth avec le flux PKCE. Gère les métadonnées de rôle dans la table profiles. Protège les routes '/dashboard' et '/admin' en utilisant un composant d'ordre supérieur.
Critères de done : Une boucle de connexion fonctionnelle qui redirige les utilisateurs vers le bon tableau de bord selon le rôle choisi lors de l'inscription.

4. Interface de gestion des produits (Cœur Vendeur)

Conçois et construis le tableau de bord 'Gestionnaire de Produits' pour les artisans.
Objectif : Une interface utilitaire pour gérer un catalogue en ligne sans friction technique.
Éléments UI :
- Vue en grille : Cartes produit montrant l'image, le prix, le statut du stock (avec des indicateurs de couleur pour le stock faible) et des boutons rapides 'Modifier/Supprimer'.
- Modal d'ajout de produit : Formulaire en plusieurs étapes pour le Titre, la Description (texte riche), le Prix (en Euros), le Stock et le chargement d'image (glisser-déposer vers Supabase Storage).
- Filtres : Barre de recherche et filtre par catégorie pour l'inventaire propre de l'artisan.
Contraintes techniques : Utilise des mises à jour UI optimistes (TanStack Query) pour que les changements paraissent instantanés. Assure-toi que les images sont compressées côté client avant le stockage.
Critères de done : Un artisan doit pouvoir ajouter un nouveau bol en céramique avec 3 photos et fixer un prix de 45€ en moins de 60 secondes.

5. Intégration Stripe Connect Multi-vendeurs

Intègre Stripe Connect pour les paiements de la marketplace et les virements aux artisans.
Objectif : Automatiser le flux où un client paie 100€, la plateforme prend 10%, et 90€ vont sur le compte connecté de l'artisan.
Workflow :
- Bouton : "Se connecter avec Stripe" dans les Paramètres Vendeur via Stripe Express.
- Page Produit : Bouton "Ajouter au panier" et "Commander" déclenchant une Supabase Edge Function.
- Logique Edge Function : Créer une session Stripe Checkout avec `transfer_data` dirigé vers le `stripe_connect_id` de la boutique.
- Webhook : Écouter `checkout.session.completed` pour mettre à jour 'order_status' en 'payé' dans la BD.
Contraintes techniques : Utilise l'intégration de Lovable avec les Supabase Edge Functions. Sécurise les variables d'environnement pour les clés secrètes Stripe.
Critères de done : Un statut "Paiements" fonctionnel dans le tableau de bord de l'artisan affichant "Actif" une fois que Stripe est lié.

6. Polish, SEO & états visuels

Paufine l'ensemble de l'expérience marketplace pour la mise en production.
Objectif : Améliorer la qualité perçue et la découvrabilité par les moteurs de recherche.
Travail à réaliser :
- SEO : Injecte des Meta Tags dynamiques (Titre, Description) sur les pages Produit et Boutique pour une meilleure indexation. Génère un fichier sitemap.xml.
- États vides : Conçois de belles illustrations pour "Aucun produit trouvé" et "Aucune commande pour le moment" avec des icônes Lucide et une typographie douce.
- Loading states : Ajoute des écrans Skeleton pour la grille de produits et les statistiques du tableau de bord.
- Toasts : Implémente 'Sonner' pour les notifications de succès/erreur (ex. "Commande expédiée !", "Stock mis à jour").
- Responsive : Assure-toi que la navigation mobile utilise un menu d'icônes en barre basse pour une meilleure expérience mobile.
Critères de done : Score SEO Lighthouse de 100/100 et aucun décalage de mise en page (layout shift) pendant le chargement des données.

Pièges courants & solutions

  1. Conditions de concurrence sur les stocks : Utilisez des transactions PostgreSQL ou des appels RPC pour décrémenter précisément les niveaux de stock lors du paiement afin d'éviter les surventes.
  2. Optimisation des images : Ne laissez pas les utilisateurs télécharger des photos brutes de 10 Mo. Utilisez une bibliothèque côté client pour redimensionner les images avant de les télécharger sur Supabase Storage.
  3. Onboarding Stripe complexe : Utilisez des comptes 'Stripe Express' au lieu de comptes 'Custom' pour laisser Stripe gérer la conformité KYC (Know Your Customer) et la vérification d'identité.
  4. SEO des applications Client-Side : Assurez-vous d'utiliser un framework comme TanStack Router ou des en-têtes SEO spécifiques dans la configuration de votre projet Lovable pour aider les robots à lire le contenu dynamique.

Conclusion

Construire une marketplace de niche n'est plus un projet d'ingénierie de six mois. Avec Lovable, vous pouvez passer d'une idée à une plateforme multi-vendeurs entièrement fonctionnelle avec des paiements automatisés et un design professionnel en quelques semaines. Commencez par définir votre niche, utilisez les prompts ci-dessus pour construire votre cœur de métier, et laissez le savoir-faire de vos utilisateurs faire le reste.

Prêt à lancer votre économie locale ? Commencez à construire sur Lovable dès aujourd'hui.

Maquette interactive

Aperçu statique d'un écran clé du projet.

A
L'Atelier Local

L'excellence du fait main, près de chez vous.

Rechercher une création unique...
Photo Produit

Vase en terre cuite

58€

Par Atelier Simone • Lyon

Céramique En stock
Photo Produit

Planche en noyer

42€

Par Bois & Fer • Annecy

Cuisine Dernier article
Photo Produit

Boucle d'oreilles Laiton

75€

Par Ornements Fin • Bordeaux

Bijoux Fait main

Schéma de base de données

À coller dans Lovable Cloud (Supabase). RLS incluses.

-- Schéma SQL pour L'Atelier Local (Marketplace d'Artisans)

-- 1. Table des profils (étendant auth.users)
CREATE TABLE public.profiles (
    id UUID REFERENCES auth.users ON DELETE CASCADE PRIMARY KEY,
    full_name TEXT,
    avatar_url TEXT,
    role TEXT DEFAULT 'customer' CHECK (role IN ('customer', 'vendor', 'admin')),
    created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);

-- 2. Table des boutiques (Shops)
CREATE TABLE public.shops (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    owner_id UUID REFERENCES public.profiles(id) ON DELETE CASCADE NOT NULL UNIQUE,
    name TEXT NOT NULL,
    slug TEXT NOT NULL UNIQUE,
    bio TEXT,
    stripe_connect_id TEXT,
    location_lat DECIMAL,
    location_lng DECIMAL,
    banner_url TEXT,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);

-- 3. Table des produits
CREATE TABLE public.products (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    shop_id UUID REFERENCES public.shops(id) ON DELETE CASCADE NOT NULL,
    name TEXT NOT NULL,
    description TEXT,
    price_cents INTEGER NOT NULL, -- Prix en centimes pour éviter les erreurs de flottants
    stock_quantity INTEGER DEFAULT 0 NOT NULL,
    category TEXT,
    images TEXT[] DEFAULT '{}',
    is_active BOOLEAN DEFAULT true,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);

-- 4. Table des commandes
CREATE TABLE public.orders (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    buyer_id UUID REFERENCES public.profiles(id) NOT NULL,
    total_amount INTEGER NOT NULL,
    status TEXT DEFAULT 'pending' CHECK (status IN ('pending', 'paid', 'shipped', 'delivered', 'cancelled')),
    stripe_checkout_id TEXT,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);

-- 5. Détails des commandes (Items)
CREATE TABLE public.order_items (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    order_id UUID REFERENCES public.orders(id) ON DELETE CASCADE NOT NULL,
    product_id UUID REFERENCES public.products(id) NOT NULL,
    quantity INTEGER NOT NULL,
    price_at_purchase INTEGER NOT NULL
);

-- Sécurité RLS
ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.shops ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.products ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.orders ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.order_items ENABLE ROW LEVEL SECURITY;

-- Politiques de lecture publique
CREATE POLICY "Les boutiques sont visibles par tous" ON public.shops FOR SELECT USING (true);
CREATE POLICY "Les produits actifs sont visibles par tous" ON public.products FOR SELECT USING (is_active = true);

-- Politiques spécifiques vendeurs
CREATE POLICY "Les artisans gèrent leur propre boutique" ON public.shops 
    FOR ALL USING (auth.uid() = owner_id);

CREATE POLICY "Les artisans gèrent leurs propres produits" ON public.products 
    FOR ALL USING (
        shop_id IN (SELECT id FROM public.shops WHERE owner_id = auth.uid())
    );

-- Politiques commandes
CREATE POLICY "Les clients voient leurs propres commandes" ON public.orders 
    FOR SELECT USING (auth.uid() = buyer_id);

Roadmap & estimation

65 h estimées~1800 crédits Lovable
MVP

Lancement Artisan (MVP)

  • →Configuration du schéma Supabase (profiles, shops, products).
  • →Construction du flux d'inscription artisan avec choix du rôle.
  • →Création d'une landing page responsive avec grille et filtres.
  • →Intégration d'un paiement Stripe Checkout simple pour les achats.
V2

Marketplace Évolutive (V2)

  • →Implémentation de Stripe Connect pour les paiements automatisés.
  • →Ajout du tableau de bord boutique avec suivi des stocks.
  • →Mise en place du stockage d'images sur Supabase Storage.
  • →Notifications e-mails via Resend pour les confirmations.
V3

Communauté & Croissance (V3)

  • →Recherche par géolocalisation pour trouver des artisans proches.
  • →Implémentation des 'Histoires' d'artisans sur les pages produits.
  • →Ajout des avis clients vérifiés avec photos.
  • →Optimisation SEO avancée et génération auto de sitemap.
#marketplace#stripe-connect#artisanat#supabase#maker-ia#economie-locale

Envie d'aller plus loin ?

Téléchargez le guide PDF complet pour maîtriser Lovable de A à Z.

Voir les guides