JJK Tech
Mission clientFlutterRiverpodSupabaseStripeFCMNetlify

MadBeauty — Marketplace de réservation beauté afro

App iOS, Android et Web qui relie clientes et prestataires : découverte, Reels, réservation, acompte, messagerie temps réel et abonnement Pro.

Une marketplace mobile + web avec paiements

MadBeauty — Marketplace de réservation beauté afro

01Contexte

Contexte

MadBeauty est une marketplace de production, pas un prototype : trois espaces (cliente, prestataire, admin) dans une même app Flutter, déployée iOS, Android et Flutter Web (Netlify, https://madbeauty.pro). Niche : coiffure afro (tresses, locks, cheveux crépus et bouclés), manucure, maquillage, pédicure. Positionnement : trouver un prestataire, réserver un créneau, payer, discuter, fidéliser. Rôle tenu en solo : cadrage produit, UX, architecture Flutter, backend Supabase, paiements Stripe, notifications et préparation stores.

02Problème

Problème

Les prestataires spécialisés (tresses, locks, etc.) gèrent trop souvent les rendez-vous par Instagram ou WhatsApp : pas d'agenda fiable, pas d'acompte, pas de vitrine pro, beaucoup de no-shows. Les clientes peinent à trouver quelqu'un de disponible, au bon style, au bon endroit, avec avis et photos réelles.

03Solution

Solution

Une seule application, deux rôles métier plus un espace admin : découverte (liste, filtres, carte, fiche, feed Reels), réservation (créneaux, statuts, acomptes, litiges), messagerie temps réel liée aux RDV et chat devis, fidélisation (points, VIP salon, parrainage), et monétisation (frais cliente, abonnement prestataire, Stripe Connect). Version 1.0.0 : parcours client et prestataire crédibles, paiements Stripe branchés.

04Résultats

Résultats

  • Marketplace 2 faces + admin, sur iOS, Android et Web, avec parcours d'achat et d'encaissement réels
  • Règles de pricing partagées entre l'app et les Edge Functions (acompte, frais, remises empilées)
  • Stripe Connect Express pour les acomptes, Stripe Billing pour l'abonnement Pro prestataire
  • Web en production sur madbeauty.pro ; app 1.0.0 aboutie, stores (Apple Organization / Play) encore côté ops

05Fonctionnalités

Fonctionnalités

Cliente

  • Auth e-mail, Google, Sign in with Apple (iOS), biométrie optionnelle, suppression de compte
  • Découverte : liste, filtres, carte (géoloc), fiche prestataire partageable
  • Feed Reels (photos / vidéos) : likes, commentaires, favoris, galerie, enregistrement au profil
  • Réservation : créneaux, statuts, export calendrier (.ics et liens Google / Apple)
  • Acompte 20 % via Stripe Connect, ou 100 % sur place ; 2 premières résa sans frais, puis 1 € dans l'app
  • Messagerie Realtime liée aux RDV, chat devis, rendus avant/après, avis, litiges, favoris et wishlist
  • Parrainage (−10 % une fois), fidélité (acompte +2 pts, 200 pts = séance offerte max 50 €), VIP salon (−5 % dès 3 RDV terminés chez le même presta)
  • Rappels rebook 4 / 6 semaines, aftercare push J+1, dark mode, UI mobile et web

Prestataire

  • Hub profil et onboarding, catalogue de services, horaires, publication Reels
  • Agenda : accepter, refuser ou terminer une réservation
  • Dashboard et analytics
  • Stripe Connect Express : onboarding et encaissement des acomptes
  • Abonnement Pro : 18 €/mois ou 180 €/an (1 service) ; 24,99 €/mois ou 250 €/an (2 services et plus)

Admin

  • Médiation des litiges, modération, catalogues — côté app Flutter et web-admin

06Modèle économique

Modèle économique

  • Cliente : 2 premières réservations sans frais plateforme ; ensuite 1 € par résa (prélevé dans l'app si confirmation avec paiement)
  • Prestation : acompte 20 % en ligne (Connect) + 80 % sur place, ou 100 % sur place
  • Prestataire : abonnement Pro pour publier et rester visible
  • Remises appliquées dans cet ordre : parrainage → VIP salon → fidélité

07Stack & architecture

Stack & architecture

Frontend Flutter 3 / Dart 3.8+, Riverpod 3, go_router (gardes d'auth, deep links, shells client / prestataire / admin), Freezed et json_serializable. Thème AppArea (vert cliente / bleu prestataire), dark mode, layout unique du téléphone au desktop (rail dès 600 px, contenu max 1280 px). Backend Supabase : PostgreSQL, Auth, Storage, Realtime, Edge Functions Deno/TypeScript, RLS et migrations SQL. Paiements : Stripe Connect Express (PaymentIntent, webhooks, idempotence) et Stripe Billing / Checkout pour l'abonnement prestataire — Stripe prioritaire sur le Web en V1 native pour rester hors IAP Apple/Google. Push FCM et notifications locales. Tests unitaires sur l'auth, le domaine et les providers clés.

Presentation

Écrans et widgets par feature. Trio screens / widgets / providers. Pas de logique métier lourde dans les widgets.

Application

Controllers et notifiers Riverpod (AsyncNotifier, Notifier, StreamProvider, autoDispose).

Domain

Modèles Freezed et règles pures : pricing, réservation, remises. Les mêmes règles tournent côté app et Edge Functions.

Infrastructure

Services Supabase, Stripe, FCM et cache. Secrets hors du client Flutter. RLS sur les tables métier.

08Défis

Défis

  • Marketplace 2 faces + admin dans une seule codebase Flutter (mobile et web)
  • Pricing complexe (acompte, 1 € dès la 3e résa, remises empilées) aligné app et Edge Functions
  • Stripe Connect Express (onboarding, PaymentIntent, webhooks, idempotence) et abonnements Billing
  • Temps réel (chat, statuts de résa) avec Row Level Security
  • UX production : loading / empty / error / retry, timeout réseau 10 s, cache images, saisie conservée
  • Contraintes App Store / Play : paiements in-app vs Stripe Web
  • Responsive unique téléphone, tablette et desktop web
  • Push métier : réservations, messages, rebook, aftercare planifiés

09Livrables

Livrables

  • App iOS, Android et Web
  • Backend Supabase (schéma, RLS, Edge Functions, Storage)
  • Intégration Stripe (Connect, abonnements, webhooks)
  • Notifications push FCM
  • Espace admin
  • Documentation produit, architecture, paiements et stores

10Statut

Statut

Version 1.0.0 : application aboutie. Le web est en ligne sur madbeauty.pro. Clés live, comptes Apple Organization / Play et conformité store restent côté ops. Boutique produits et packs en roadmap.

Une question sur ce projet ?

Posez une question précise (technique, choix d'architecture, résultats...) et obtenez une réponse générée à partir du contenu de ce projet.