30 mai -> 21 juin 2026
Du repo vide à l'app de quêtes vélo payante.
Une timeline partageable des décisions, commits, vérifications et coupes produit qui ont façonné BikeQuest entre le 30 mai et le 21 juin 2026.
Le contexte produit est devenu la source de vérité
Le repo a commencé avec `BIKE_QUEST_CONTEXT.md` : un cadre produit écrit avant que l’app accumule des fonctionnalités.
Commit 5e892ce- Comment
- Nous avons initialisé le repo, vérifié la branche et le remote, commité le fichier de contexte, puis poussé le premier commit sur `main`.
L’idée statique est devenue une app Next.js
La première landing a rejoint Next.js, apportant un vrai routage, un déploiement simple et un espace où faire évoluer le discours produit.
Commit 3116a5f- Comment
- La première implémentation est restée légère : une page App Router, le CSS global, la marque et un point d’entrée public simple.
La direction visuelle a quitté les codes du jeu rétro
BikeQuest s’est installé dans une aventure outdoor moderne : adulte, ludique, centrée sur les badges et loin d’un clone de Strava.
DA prompt and constraints- Comment
- Nous avons confronté la promesse produit aux publics visés et écarté le pixel art rétro, la fantasy, le néon gamer et les graphiques de performance.
Les outils Supabase ont rejoint la boucle de build
Codex a été relié au projet Supabase pour inspecter et vérifier la base depuis le même environnement de travail.
Supabase MCP connected- Comment
- Nous avons ajouté le serveur MCP Supabase, réalisé l’authentification OAuth, vérifié la connexion avec des contrôles équivalents au CLI et installé les compétences Supabase.
La première boucle MVP a été livrée
L’app a reçu son premier parcours de quête, ses écrans protégés, la gestion du profil, la révélation des badges et son catalogue.
Commits a9ab972 -> e55dc56- Comment
- Nous avons construit le minimum autour de l’auth Supabase, des profils rider, du catalogue et du déblocage des badges, avant les fonctions communautaires.
La sécurité est devenue un jalon produit
Un audit du repo a cartographié la vraie frontière de confiance : RLS Supabase, stockage, chemins service-role et routes protégées.
Security review completed- Comment
- Nous avons commencé par le modèle de menace, filtré les fichiers générés, examiné les surfaces runtime et validé chaque piste avec le code et le build.
La validation des preuves est entrée dans la boucle centrale
Les photos et captures d’activité sont devenues des preuves produit, avec des routes de validation puis des limites de débit.
Commits 785a1c4 and 461e543- Comment
- Nous avons ajouté la route de validation, relié les exigences de preuve des quêtes et posé des limites pour protéger le flux appuyé par l’IA.
L’onboarding mobile et les droits du profil ont été resserrés
Le parcours d’arrivée a été simplifié pour réduire les impasses et rendre la gestion des permissions plus claire.
Commit 2af3e34- Comment
- Nous avons inspecté les écrans d’auth et d’onboarding, ajusté le parcours mobile et aligné la création du profil avec les routes protégées.
Le prix est devenu simple : 19 € une fois
La landing a abandonné la fausse rareté de lancement pour un paiement unique et clair donnant accès à tout BikeQuest.
Commit 49ee484- Comment
- Nous avons d’abord figé le discours dans les tests, puis centralisé le prix dans `src/lib/landing.ts` et mis à jour la section visible.
La progression a quitté l’XP pour la collection
La gamification est devenue un album : badges débloqués, familles complétées et badges encore verrouillés à la place des niveaux et de l’XP.
Commit f5db8e3- Comment
- Nous avons dérivé la progression du catalogue et de `user_badges`, créé un helper pur et réutilisé ce calcul dans l’app, les badges et le profil.
Le MVP a été simplifié en tableau de badges
Today, le feed et la progression locale ont quitté la boucle rider. Quêtes et badges ont fusionné dans un tableau facile à parcourir.
Badge-first direction- Comment
- Les badges sont devenus l’unité visuelle principale, les écrans secondaires ont été redirigés et le détail des quêtes s’est concentré sur la preuve.
Le tableau de quêtes et le profil rider ont été affinés
Les cartes de quête, accents orange, aperçus de groupes, cartes rider et surfaces de partage ont rendu le produit plus intentionnel.
Commits eafecc9 -> deb47f2- Comment
- Nous avons amélioré les mêmes écrans centraux plutôt que d’en ajouter : tableau de quêtes, hiérarchie des cartes, profil et partage des badges.
Les photos de profil sont devenues plus légères et visibles avant l’envoi
L’upload d’avatar a gagné un aperçu local immédiat et une conversion WebP côté client avant l’envoi du formulaire.
ProfilePhotoInput- Comment
- Nous avons écrit le test de régression, extrait un petit composant client, redimensionné l’image en 640 × 640 via canvas et remplacé le fichier avec `DataTransfer`.
Les prompts de validation IA ont été alignés avec les règles produit
Prompts, catalogue, seed, migrations, documentation et lignes Supabase actives ont été resserrés ensemble.
Commit 09e7a56- Comment
- Après une revue de cohérence sans modification, nous avons corrigé Roundabout, Dirt Shortcut, 1H Outside et Quiet Road dans chaque source de vérité.
Les pages d’envoi de preuve sont devenues plus claires
Le parcours de preuve a été simplifié pour que les riders comprennent mieux ce qu’ils doivent envoyer avant la validation.
Commit e223ee2- Comment
- Nous avons limité le changement à l’uploader et à la surface de quête, contrôlé le diff, passé les tests et poussé un commit ciblé.
Stripe Checkout a transformé l’app en produit payant
BikeQuest a reçu un vrai paiement unique Stripe, ses routes de checkout, le webhook et une table d’accès payant.
Commit 1816723- Comment
- Nous avons retrouvé l’offre dans le repo, créé le produit et le prix Stripe, ajouté les routes, appliqué la migration Supabase et vérifié la production.
Le site public a gagné ses surfaces de confiance
Les pages légales, un header et un footer plus simples et une navigation plus claire ont renforcé la surface de lancement.
Commits 6b00eee and cd27485- Comment
- Le travail est resté concentré sur les routes publiques et la structure de la landing, sans modifier la boucle de l’app.
Un faux utilisateur a vérifié tout le parcours payant
Un compte de test avec email confirmé, profil et achat payé a permis de parcourir réellement toutes les barrières d’accès.
alexis_test profile- Comment
- Nous avons utilisé l’Admin Supabase via l’environnement du repo, créé ou mis à jour le profil et l’achat, puis vérifié la connexion et l’accès.
Le renforcement sécurité et UX a fermé les écarts principaux
Redirections, propriété des preuves, likes du feed, tentatives payantes et politiques Supabase ont été renforcés puis poussés sur `main`.
Commits e38f800 and 64b827e- Comment
- Nous avons audité les surfaces runtime, écrit des tests de schéma ciblés, appliqué la migration et vérifié avec tests, lint, build, audit et SQL.
Le tunnel d’auth et d’onboarding est devenu plus fluide
Les parcours d’inscription, de connexion et d’onboarding ont été resserrés une fois le modèle d’accès payant en place.
Commit f611ca6- Comment
- Nous avons retravaillé l’auth autour de la séquence réelle des routes, plutôt que de traiter checkout, onboarding et accès comme trois sujets séparés.
L’UX de lancement, les cartes et le partage rider ont été affinés
La mise en page des missions, le partage rider, l’affichage des badges et les objectifs de quête ont reçu une dernière passe produit.
Commits 2610fcb -> f8a1509- Comment
- Nous avons continué sur les surfaces visibles : textes d’auth, objectifs, espacements, contenu des cartes de partage et présentation du profil.
La récupération de compte et les promotions ont finalisé le build
Les codes promotionnels Stripe, la confirmation d’auth et les pages de réinitialisation ont rendu le lancement payant plus robuste.
Commits 1d3ed86 and d46ef19- Comment
- Nous avons ajouté les états pratiques qui évitent du support : réductions, confirmations par email et récupération du mot de passe.