Tous les écrans de l'app BatiSpot
Mockups statiques montrant le rendu de chaque page avec des données fictives. Aucune connexion requise. Idéal pour valider le design avant de toucher à la prod.
← Retour au menu simulateurArtisan · 1Welcome
Page d'accueil après inscription. L'artisan voit son statut de validation et le CTA pour démarrer son essai 14 jours.
Page de bienvenue post-validation
- Trigger : redirection auto après validation candidature par l'équipe
- Date essai : calculée +14 jours après l'activation
- 2 CTAs : abonnement immédiat (Stripe) OU continuer essai
- Logo : icône maison gradient officielle
Artisan · 2Inscription Pro
Formulaire candidature en 3 étapes : infos entreprise, métiers + zones, documents (KBIS, RC pro, décennale).
Formulaire candidature artisan
- 3 étapes : Infos perso → Métiers/zones → Documents (KBIS, RC pro, décennale)
- Validation : équipe BatiSpot 24-48h ouvrées
- Tunnel post-validation : email automatique + redirection Stripe
- Stripe URL :
buy.stripe.com/bJebJ0bmx5XwcHq19h0RG03
Artisan · 2bInscription — Étape 4 / Créer son espace
Nouvelle étape finale de l'inscription : l'artisan crée son compte (Google ou email/password) avant d'être redirigé vers Stripe. Permet de lier l'auth à son dossier pour suivi.
Step 4 / 4 — Création de compte (nouveau)
- Flux inscription mis à jour : 4 étapes au lieu de 3. Étape 4 ajoutée entre Documents et Stripe.
- Google OAuth :
supabase.auth.signInWithOAuth→ redirect versauth-callback.html?flow=inscription - Email/password :
supabase.auth.signUp→ lien user_id inline, puis Stripe - Après auth :
auth-callback.htmldétecteflow=inscription→ updateartisan_leads.user_idpar email → redirect Stripe - Email pré-rempli : depuis
state.emailcollecté step 1 (readonly)
- Step 1 : Coordonnées → Step 2 : Entreprise → Step 3 : Documents → Step 4 : Compte → Stripe → Dashboard
- user_id lié : artisan peut se reconnecter via
/app/login.htmlet voir son dossier - Dashboard : statut validation (en_attente / documents_valides / actif) + demandes + chantiers
Artisan · 3Connexion
Authentification Google SSO ou email (magic link / mot de passe). Badge "Espace artisan" pour signaler le contexte. Cross-link vers connexion client.
Connexion artisan (Google SSO + magic link / password)
- Google SSO : OAuth configuré dans Supabase, 1 clic pour les artisans déjà sur Google Workspace
- Tabs email : magic link (par défaut, recommandé) ou mot de passe (pour ceux qui préfèrent)
- Pill "Espace artisan" : signale clairement le contexte, évite les confusions avec login client
- Backend : Supabase Auth (Google OAuth + OTP magic link + password)
- Cross-link : footer vers connexion client (les deux logins partagent l'app)
Artisan · 4Dashboard chantiers
Page principale artisan. 3 onglets : Nouveaux chantiers (à accepter), En cours, Terminés. Bottom nav 4 items.
Dashboard artisan — chantiers
- 3 onglets : Nouveaux (à accepter) / En cours / Terminés
- Photo client : injectée depuis Supabase storage
chantiersbucket - Click carte → Détail chantier (écran #5)
- Bottom nav : Chantiers · Devis · Profil · Plus
- Backend :
listNouvellesDemandes()+listChantiers()
Artisan · 5Détail chantier
3 onglets : Infos (client + adresse), Photos (envoyées par client + artisan), Messages (chat artisan ↔ client).
Détail chantier — vue artisan
- Photos client réelles : depuis Supabase storage
chantiers/<chantier_id>/... - 3 onglets : Photos · Messages · Infos client
- Action principale : "J'accepte ce chantier" → claim atomique via RPC
claim_demande - Anti-vol : si un autre artisan a déjà accepté → erreur explicite
Artisan · 6Profil artisan
Édition métiers, zones, logo, info entreprise. Visible par les clients dans la fiche artisan.
Profil artisan
- Stats publiques : nb chantiers, note moyenne, taux de réponse
- Édition : métiers, zones, logo (max 2 Mo), bio
- Backend :
upsertMyProfile()+uploadLogo()Supabase storage
Artisan · 7Paramètres + Stripe
Gestion abonnement (Stripe Customer Portal), notifications, déconnexion. Bouton "Modifier paiement" redirige vers Stripe.
Paramètres + abonnement Stripe
- Stripe Customer Portal : redirection sécurisée pour modifier paiement / annuler
- Notifications : push (PWA) + email (toggle par catégorie)
- Annulation : 1 clic → Stripe annule fin de période
- Webhook :
stripe-webhookSupabase Edge Function gère les events
Client · 1Demande de devis
Formulaire B2C avec type travaux, budget, délai, photos du chantier. Création anonyme dans la table demandes_devis.
Formulaire demande devis (particulier)
- Anonyme : pas besoin de compte pour soumettre (insert avec
client_id=null) - Claim orphelin : si l'utilisateur s'inscrit dans l'heure → la demande lui est attribuée
- Photos : upload Supabase storage avec compression auto si >1.5 Mo
- Email confirm : auto-envoyé via Brevo après submission
Client · 2Connexion client
Login client par magic link. Une fois connecté, voit ses demandes en cours et peut suivre les chantiers acceptés.
Connexion client (magic link)
- Magic link : même mécanisme que login artisan
- Post-login : redirection vers
client.html(dashboard particulier) - Auto-claim : associe les demandes orphelines créées dans l'heure
Client · 3Dashboard client
Vue particulier : ses demandes en cours, chantiers acceptés, devis reçus.
Dashboard particulier
- Vue agrégée : demandes (en traitement / artisan trouvé / terminé) + chantiers actifs
- Notification temps réel : nouveau devis reçu, message artisan, photo postée
- Coffre-fort docs : devis, factures, attestations centralisés
- Backend :
listMyDemandes()+listMyClientChantiers()
Client · 4Suivi chantier
Page publique accessible par token (pas d'auth requise). Photos avancement, messagerie, devis.
Suivi chantier (vue client)
- Token public : URL accessible sans auth (pas besoin de compte)
- Photos artisan : phases (avant / pendant / après) avec captions
- Messagerie : chat client ↔ artisan via RPC
post_client_message - Backend :
pub_getChantier()+pub_getPhotos()+pub_getMessages()
Client · 5Index PWA
Page d'entrée installable. Smart redirect : si connecté → dashboard, sinon → login. Affiche aussi le CTA installation PWA.
Index PWA — entrée installable
- Smart redirect : connecté → dashboard, sinon → login
- PWA :
manifest.json+ service worker pour installation native - 2 entrées : Je suis client / Je suis artisan
- Détection install : si déjà installée → ouverture standalone