← Phase 3 / M17 — Marketplace Créateurs

🏆 Marketplace Créateurs

Plateforme permettant aux créateurs vérifiés de monétiser leurs itinéraires et expériences de voyage premium. Split 80/20, paiements Stripe, avis acheteurs vérifiés et programme d'affiliation.

80%
Part créateur
20%
Commission NOMIIQ
1 000+
Créateurs cible P3
15
User Stories

📋 15 User Stories — M17

US17.1 Must En tant que créateur, je peux soumettre une candidature "Créateur Vérifié" (portfolio, réseaux, expérience de voyage).
US17.2 Must En tant qu'admin, je peux approuver ou rejeter une candidature créateur avec motif.
US17.3 Must En tant que créateur vérifié, je peux publier un itinéraire premium avec prix fixé (1€ à 49€).
US17.4 Must En tant qu'utilisateur, je peux acheter un itinéraire premium via Stripe (carte, Apple Pay, Google Pay).
US17.5 Must En tant qu'utilisateur, je reçois l'itinéraire complet dans mon espace personnel après achat.
US17.6 Must En tant que créateur, je dispose d'un dashboard (ventes, revenus, followers, notes moyennes).
US17.7 Must En tant que système, le split paiement 80% créateur / 20% NOMIIQ est effectué automatiquement via Stripe Connect.
US17.8 Should En tant qu'utilisateur acheteur, je peux laisser un avis vérifié (1-5 étoiles + commentaire) sur un itinéraire acheté.
US17.9 Should En tant qu'utilisateur, je peux voir le premier jour d'un itinéraire premium gratuitement (preview).
US17.10 Should En tant que créateur, je peux proposer des bundles (ex : "Pack Asie 3 itinéraires").
US17.11 Should En tant que créateur, je peux activer un programme d'affiliation (invite code → 5% sur les ventes référencées).
US17.12 Should En tant qu'utilisateur, je reçois des recommandations IA d'itinéraires premium selon mon profil de voyage.
US17.13 Could En tant que créateur, je peux voir les analytics d'engagement (vues, achats, taux conversion, pays des acheteurs).
US17.14 Could En tant qu'utilisateur, je peux offrir un itinéraire premium à un ami (gift link).
US17.15 Could En tant que créateur, je peux proposer un abonnement mensuel (accès à tous mes itinéraires).

🔗 Endpoints Marketplace

MéthodeEndpointAuthDescription
POST /api/creators/apply user Soumettre candidature créateur
GET /api/creators/apply/:id admin Lire une candidature
PATCH /api/creators/apply/:id/approve admin Approuver/rejeter candidature
GET /api/marketplace/itineraries public Catalogue itinéraires premium (paginé, filtré)
POST /api/marketplace/itineraries creator Publier itinéraire premium
PATCH /api/marketplace/itineraries/:id creator Modifier itinéraire publié
GET /api/marketplace/itineraries/:id/preview public Voir le jour 1 gratuit
POST /api/marketplace/purchase user Acheter un itinéraire (Stripe)
GET /api/marketplace/purchases user Mes achats
POST /api/marketplace/reviews user (acheteur) Laisser un avis vérifié
GET /api/marketplace/reviews/:itineraryId public Avis d'un itinéraire
GET /api/creators/dashboard creator Stats ventes & revenus
POST /api/marketplace/bundles creator Créer un bundle
POST /api/creators/affiliate creator Activer code d'affiliation
GET /api/creators/payouts creator Historique virements Stripe

🗄️ Schémas SQL — Marketplace

🏆 Table creator_profiles

id UUID PRIMARY KEY
user_id UUID UNIQUE → users
status ENUM(pending,approved,rejected,suspended)
bio_long TEXT
portfolio_url TEXT
countries_visited CHAR(2)[]
stripe_account_id TEXT -- Stripe Connect
stripe_onboarded BOOLEAN DEFAULT false
total_sales INT DEFAULT 0
total_revenue_eur DECIMAL DEFAULT 0
affiliate_code TEXT UNIQUE
created_at TIMESTAMPTZ

💰 Table marketplace_items

id UUID PRIMARY KEY
creator_id UUID → creator_profiles
itinerary_id UUID → itineraries
price_eur DECIMAL NOT NULL
type ENUM(single,bundle,subscription)
bundle_items UUID[] -- si bundle
stripe_product_id TEXT
stripe_price_id TEXT
avg_rating DECIMAL DEFAULT 0
sales_count INT DEFAULT 0
is_published BOOLEAN DEFAULT false
published_at TIMESTAMPTZ

🛒 Table marketplace_purchases

id UUID PRIMARY KEY
buyer_id UUID → users
item_id UUID → marketplace_items
amount_eur DECIMAL
creator_payout_eur DECIMAL -- 80%
platform_fee_eur DECIMAL -- 20%
stripe_payment_intent TEXT
affiliate_code TEXT
affiliate_user_id UUID
status ENUM(pending,completed,refunded)
purchased_at TIMESTAMPTZ

⭐ Table marketplace_reviews

id UUID PRIMARY KEY
item_id UUID → marketplace_items
buyer_id UUID → users
purchase_id UUID → marketplace_purchases
rating INT CHECK(1-5) NOT NULL
comment TEXT
is_verified_purchase BOOLEAN DEFAULT true
created_at TIMESTAMPTZ
UNIQUE(purchase_id) -- 1 avis par achat

💳 Flux de Paiement — Stripe Connect Express

1
Acheteur paie
Stripe Payment Intent créé côté NOMIIQ
2
Fonds captés
Stripe retient les fonds (T+1)
3
Split auto
80% créateur / 20% NOMIIQ via Transfer API
4
Virement créateur
Stripe Connect Express → compte bancaire
⚠️ Règles de protection acheteur
• Remboursement possible sous 48h si itinéraire non conforme
• Litige géré par NOMIIQ (acheteur conteste → admin arbitre)
• Contenu vérifié par modération avant publication
• Preview gratuite du Jour 1 avant tout achat