Comment créer une Marketplace Tech spécialisée avec Lovable : Le Guide Pro Complet
Apprenez à bâtir une marketplace spécialisée dans la tech d'occasion. De la check-list d'inspection technique à Stripe Connect pour les paiements, découvrez comment Lovable permet de disrupter le marché de la revente électronique.

Aperçu du projet



Le cas — Révolutionner le marché de la high-tech d'occasion
Le marché de l'électronique d'occasion est en pleine explosion, mais il se heurte à un problème majeur de confiance. Les acheteurs craignent les vices cachés, tandis que les vendeurs particuliers peinent à se professionnaliser pour rassurer leurs clients.
Public Cible :
- Reconditionneurs & Passionnés : TPE ou particuliers qui achètent, réparent et souhaitent une vitrine professionnelle.
- Acheteurs Tech-Savvy : Utilisateurs cherchant des appareils de qualité (Smartphones, Laptops, Consoles) avec des inspections détaillées.
Le Problème Résolu : La plupart des marketplaces sont génériques. Elles ne proposent pas de champs spécifiques pour la "Santé de la batterie", les "Rayures d'écran" ou "l'historique des réparations". Notre application, TechCycle, spécialisée tech, propose un flux structuré pour les inspections, rendant chaque annonce pro et transparente.
La Valeur Ajoutée : Pour les vendeurs : Un moteur de mise en vente guidé qui s'occupe des specs techniques. Pour les acheteurs : La transparence. Un système de "Grade" (Parfait état, Très bon état, Correct) appuyé par une check-list obligatoire en 10 points.
Fonctionnalités clés
- Moteur de Listing Guidé : Au lieu d'une simple description, le vendeur remplit des champs spécifiques (Stockage, RAM, Processeur) selon la catégorie.
- Check-list d'Inspection Technique : Chaque annonce exige un rapport d'état sur 10 points critiques (Micro, Caméra, FaceID, Écran, Batterie, etc.).
- Suggestion de Prix Dynamique : Selon le modèle et l'état, l'app suggère une fourchette de prix basée sur les ventes passées.
- Intégration Stripe Connect : Paiements sécurisés où les fonds sont bloqués jusqu'à confirmation de réception, avec gestion des commissions.
- Messagerie Contextuelle : Les acheteurs discutent avec les vendeurs. La fenêtre de chat affiche le produit concerné pour éviter les questions répétitives.
- Recherche & Filtres Avancés : Filtrer par "Cycles de batterie", "Garantie restante" ou "Origine de la réparation".
- Tableau de Bord de Suivi : États en temps réel : "Commandé", "Expédié", "Livré".
- Génération de Factures Automatiques : PDFs générés pour chaque transaction via des Edge Functions Supabase.
Stack & Intégrations
Lovable couplé aux bons outils externes fait de ce projet une véritable plateforme de grade industriel :
- Lovable Cloud (Frontend/Backend) : Gère toute l'UI/UX avec React, Tailwind et Shadcn UI.
- Supabase :
- PostgreSQL : Pour gérer les produits, utilisateurs, commandes et messages.
- Auth : Connexion sécurisée avec Email/Mot de passe et Google.
- Storage : Stockage des photos haute résolution des appareils.
- Edge Functions : Pour gérer les Webhooks Stripe et la génération de PDF.
- Stripe Connect : Indispensable pour une marketplace. Permet de prélever une commission (ex: 10%) sur chaque vente automatiquement.
- Resend : Envoi d'emails transactionnels (Nouvelle commande, Inspection validée, Baisse de prix).
- Cloudinary (Optionnel) : Pour détourer automatiquement les photos de produits et uniformiser le catalogue.
Prompts Lovable concrets
Voici les prompts à copier-coller dans Lovable pour construire cette application :
Prompt 1 : Base de données et Navigation
Crée une marketplace nommée TechCycle pour l'électronique d'occasion.
Configure une navigation latérale avec : Accueil, Parcourir, Mes Annonces, Commandes, Messages.
Le design doit être moderne avec un gris anthracite comme couleur primaire et des accents vert émeraude.
Initialise un schéma Supabase avec les tables : 'products' (id, seller_id, title, category, price, condition_score, specs_json, status), 'orders' (id, buyer_id, product_id, status, total_price), et 'profiles' (id, username, bio, rating).
Prompt 2 : Formulaire de mise en vente multi-étapes
Construis un formulaire de mise en vente pour les vendeurs.
Étape 1 : Sélection de catégorie (Téléphone, Laptop, Tablette, Audio).
Étape 2 : Specs techniques selon la catégorie (si Téléphone : choisir Marque, Modèle, Capacité).
Étape 3 : Check-list d'inspection. Inclure des cases à cocher pour 'Le bouton power fonctionne', 'Écran sans fissures', 'Caméra fonctionnelle', et 'Pourcentage de santé batterie'.
Étape 4 : Upload de photos avec drag-and-drop.
Utilise Zod pour la validation.
Prompt 3 : Page de résultats avec filtres
Conçois une page de recherche pour la marketplace.
Inclus une barre de recherche en haut et une barre latérale de filtres : Catégorie, Fourchette de prix, État (Parfait, Très bon, Correct), et Marque.
Les cartes produits doivent afficher une image de qualité, le prix, un badge pour le 'TechScore' (moyenne de l'inspection), et la note du vendeur.
Ajoute un bouton 'Aperçu rapide' qui ouvre un drawer.
Prompt 4 : Intégration Stripe Connect
Crée un onglet 'Paiements' dans le profil utilisateur. Si l'utilisateur est un vendeur, affiche son statut 'Stripe Connect'.
Ajoute la logique suivante :
1. L'utilisateur clique sur 'Connecter Stripe'.
2. L'app appelle une Edge Function pour générer un lien d'onboarding Stripe.
3. Au retour, affiche un badge 'Prêt à vendre' et son solde actuel.
Écris le code du dashboard et la structure de l'Edge Function.
Prompt 5 : Messagerie Temps Réel
Implémente un chat en temps réel entre acheteurs et vendeurs.
Utilise Supabase Realtime.
L'interface de chat doit afficher le produit concerné en haut de la conversation.
Ajoute un bouton 'Contacter le vendeur' sur la page produit qui ouvre ce chat avec un message automatique 'Bonjour, ce [Nom du Produit] est-il toujours disponible ?'.
Pièges courants & solutions
-
Gestion des caractéristiques techniques disparates :
- Piège : Créer une colonne pour chaque spec (RAM, CPU) rend la base de données rigide.
- Solution : Utilisez une colonne
jsonbnomméespecs. Stockez-y des objets différents selon que l'objet soit un iPhone ou un MacBook.
-
Confiance et Fiabilité des vendeurs :
- Piège : Les vendeurs peuvent mentir sur la check-list.
- Solution : Instaurez un badge "Vendeur Vérifié" après 5 ventes réussies. Intégrez un système de litige bloquant les fonds Stripe.
-
Poids des images :
- Piège : Les photos de smartphones prises en 4K ralentissent le catalogue.
- Solution : Utilisez la transformation d'image native de Supabase pour servir des miniatures WebP légères.
-
Logistique et étiquettes :
- Piège : Gérer les envois manuellement est un cauchemar à grande échelle.
- Solution : Connectez l'API de Shippo ou Sendcloud via une Edge Function pour générer les étiquettes dès que la commande est payée.
-
Calcul de la TVA/Commission :
- Piège : Oublier les taxes locales dans les transactions C2C ou B2C.
- Solution : Activez Stripe Tax pour automatiser la collecte selon la localisation de l'acheteur.
Conclusion
Lancer une marketplace de niche comme TechCycle n'est plus un projet de 6 mois. Avec Lovable, vous pouvez valider votre concept avec une base technique solide en quelques jours. En vous concentrant sur la "spécialisation tech", vous apportez une valeur que les géants généralistes ne peuvent pas offrir : la précision technique et la confiance.
Prêt à bâtir votre empire de la seconde main ? Commencez par le prompt n°1 !
Maquette interactive
Aperçu statique d'un écran clé du projet.
Smartphones disponibles
iPhone 15 Pro - 256GB
890€MacBook Air M2 - 8GB
950€Schéma de base de données
À coller dans Lovable Cloud (Supabase). RLS incluses.
-- Tables principales pour la Marketplace TechCycle
-- Profils utilisateurs étendus
CREATE TABLE profiles (
id UUID REFERENCES auth.users ON DELETE CASCADE PRIMARY KEY,
username TEXT UNIQUE,
avatar_url TEXT,
bio TEXT,
rating DECIMAL DEFAULT 5.0,
stripe_connect_id TEXT,
is_verified BOOLEAN DEFAULT false,
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);
-- Produits
CREATE TABLE products (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
seller_id UUID REFERENCES profiles(id) ON DELETE CASCADE NOT NULL,
title TEXT NOT NULL,
description TEXT,
category TEXT CHECK (category IN ('phone', 'laptop', 'tablet', 'audio', 'other')),
price DECIMAL NOT NULL,
condition TEXT CHECK (condition IN ('mint', 'good', 'fair')),
specs_json JSONB, -- Stockage des specs techniques variées
inspection_data JSONB, -- Détails de la check-list technique
images TEXT[], -- Array d'URLs d'images
status TEXT DEFAULT 'available' CHECK (status IN ('available', 'pending', 'sold')),
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);
-- Commandes
CREATE TABLE orders (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
buyer_id UUID REFERENCES profiles(id) NOT NULL,
product_id UUID REFERENCES products(id) NOT NULL,
stripe_payment_id TEXT,
amount DECIMAL NOT NULL,
status TEXT DEFAULT 'paid' CHECK (status IN ('paid', 'shipped', 'delivered', 'disputed')),
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);
-- Messages
CREATE TABLE messages (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
sender_id UUID REFERENCES profiles(id) NOT NULL,
receiver_id UUID REFERENCES profiles(id) NOT NULL,
product_id UUID REFERENCES products(id),
content TEXT NOT NULL,
is_read BOOLEAN DEFAULT false,
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);
-- RLS Policies
ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Profils visibles par tous" ON profiles FOR SELECT USING (true);
CREATE POLICY "Utilisateurs modifient leur propre profil" ON profiles FOR UPDATE USING (auth.uid() = id);
ALTER TABLE products ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Produits visibles par tous" ON products FOR SELECT USING (status = 'available');
CREATE POLICY "Vendeurs gèrent leurs produits" ON products FOR ALL USING (auth.uid() = seller_id);
ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Acheteurs voient leurs commandes" ON orders FOR SELECT USING (auth.uid() = buyer_id);
CREATE POLICY "Vendeurs voient les commandes de leurs produits" ON orders FOR SELECT USING (
EXISTS (SELECT 1 FROM products WHERE products.id = orders.product_id AND products.seller_id = auth.uid())
);Roadmap & estimation
Cœur de Marketplace & Moteur de Listing
- →Configuration du schéma Supabase pour les produits et profils pro
- →Construction du formulaire de mise en vente multi-étapes avec specs JSONB
- →Implémentation de l'upload d'images vers Supabase Storage
- →Création du moteur de recherche et filtrage des produits
- →Système de messagerie basique entre acheteur et vendeur
Paiements & Confiance Client
- →Intégration Stripe Connect pour les paiements sécurisés et automatisés
- →Calcul algorithmique du TechScore basé sur la check-list d'inspection
- →Tableau de bord de suivi de commande (Payé, Expédié, Livré)
- →Génération automatique de factures PDF via Edge Functions
Optimisation IA & Logistique Pro
- →Analyse photo par IA pour suggérer l'état et le modèle de l'appareil
- →Moteur de recommandation de prix basé sur les tendances du marché
- →Intégration API transporteurs (Sendcloud/Shippo) pour les étiquettes
- →Système de notifications avancées (Push & Email via Resend)
Envie d'aller plus loin ?
Téléchargez le guide PDF complet pour maîtriser Lovable de A à Z.
Voir les guides