Esc
↑↓ Naviguer ↔ Ouvrir Esc Fermer
Aller au contenu

🧘 Hugo · Studio Pulse

Hugo, 28 ans, ex-commercial. Sa cousine InĂšs vient d’ouvrir Studio Pulse, un studio de yoga + Pilates dans le centre de Lyon. Pour l’instant elle gĂšre les inscriptions sur un Google Sheet partagĂ© — chaos garanti dĂšs qu’il y a 3 cours par jour.

Hugo se forme au code en parallÚle de sa formation ressources humaines. Il propose à InÚs de coder son site avec espace membre + réservations en ligne.

TypeSite vitrine + plateforme de réservation + abonnements
CibleAdultes 25-55, pratiquants réguliers
Volume~ 200 membres actifs, 40 cours/semaine
Stack frontendNext.js 16 (App Router)
Stack backendNext.js API Routes + Hono pour les workers
Base de donnéesPostgres + Drizzle
AuthBetter Auth (email + Google OAuth)
PaiementStripe Subscriptions (carnets de cours)
HébergementVercel
Sous-axeÉpisode
5.1 HTMLHugo structure : présentation studio, planning des cours, profils des profs, page tarifs.
5.2 CSSGrid pour le planning hebdo, Flexbox pour les cards profs. Ambiance végétale (verts doux + cream).
5.3 A11yLe formulaire de contact n’a pas de label visible. Hugo corrige et passe l’audit axe-core.
Sous-axeÉpisode
6.1 JSLe calendrier filtre par type (yoga / Pilates / méditation). Premier état dynamique.
6.2 AsyncInscription en ligne : POST vers une API factice, gestion d’erreur, feedback à l’utilisateur.
6.3 APIs navigateurDate.now() + Intl pour formater les dates. Web Notifications pour rappels (J-1 du cours).
6.4 TypeScriptHugo type le créneau : { id, day, hour, type, instructor, capacity, booked }. Plus de bug de capacité dépassée.
Sous-axeÉpisode
7.1 Concepts communsHugo passe au framework : trop d’état partagĂ© entre planning, panier de rĂ©servations, profil.
7.2 ReactComposants planning, créneau, carnet de cours, profil membre.
7.3 AlternativesHugo regarde Vue et Svelte mais InĂšs lit dĂ©jĂ  des tutos React → on garde React.
7.4 Next.jsApp Router + Server Components pour le planning indexé Google. SEO local renforcé.
7.5 BuildOptimisation des images des profs : -60 % de poids.
7.6 Design systemTailwind v4 + Radix UI pour les modales de réservation accessibles.
Sous-axeÉpisode
8.0 Concepts communsRĂ©server un crĂ©neau = transaction (vĂ©rifier capacitĂ© → ajouter → dĂ©crĂ©menter places restantes). AtomicitĂ©.
8.1 Node + HonoAPI : POST /bookings, gestion concurrence (deux clients qui rĂ©servent la derniĂšre place en mĂȘme temps).
8.2 Auth + sécuMagic link, OAuth Google, RBAC (élÚve / prof / admin).
8.3 StripeAbonnement mensuel ou carnet 10 cours. Webhook idempotent pour la confirmation. Hugo galĂšre 2 jours sur la signature webhook.
  • Axe 9 SQL : InĂšs veut un classement des Ă©lĂšves les plus assidus. Hugo apprend les fenĂȘtrages SQL.
  • Axe 12 sĂ©cu : un payload bizarre dans le champ « note allergie ». Hugo dĂ©couvre l’injection SQL — sa requĂȘte paramĂ©trĂ©e a sauvĂ© la mise.
  • Axe 13 perf : la page tarifs est lente sur mobile 4G. Hugo paresse-charge les images de cours et passe le LCP de 4 s Ă  1,3 s.
  • Axe 14 DevOps : pipeline CI Vercel + Neon branch DB par PR.
  • Axe 16 : pour le streaming live d’un cours en visio, Hugo bascule sur le parcours LĂ©a (real-time).
  • Tu aimes l’univers bien-ĂȘtre / services / rĂ©servation.
  • Tu veux toucher Ă  Stripe Subscriptions (compĂ©tence trĂšs valorisĂ©e).
  • Tu veux comprendre les enjeux de concurrence DB (overbooking) trĂšs tĂŽt.
  • Tu es Ă  l’aise avec une stack Next.js full-stack plutĂŽt que Astro + backend sĂ©parĂ©.

DerniĂšre mise Ă  jour :