BikeQuest
Registro de build BikeQuest

De repo vacío a app ciclista de misiones de pago.

Una timeline compartible de decisiones, commits, verificaciones y recortes de producto que dieron forma a BikeQuest entre el 30 de mayo y el 21 de junio de 2026.

Ventana de build23 días

30 may -> 21 jun 2026

2026-05-3005:51
repocontextgit

El contexto de producto se convirtió en la fuente de verdad

El repo empezó con `BIKE_QUEST_CONTEXT.md`: un marco de producto escrito antes de que la app acumulara funcionalidades.

Commit 5e892ce
Cómo
Inicializamos el repo, comprobamos la rama y el remote, guardamos el archivo de contexto y subimos el primer commit a `main`.
2026-05-3008:29
nextjslandingfoundation

La idea estática se convirtió en una app Next.js

La primera landing pasó a Next.js, aportando rutas reales, despliegue sencillo y un lugar donde evolucionar el mensaje del producto.

Commit 3116a5f
Cómo
Mantuvimos una primera implementación ligera: página App Router, CSS global, marca y un punto de entrada público sencillo.
2026-05-3019:09
branddesignpositioning

La dirección visual abandonó los códigos de juego retro

BikeQuest encontró una aventura outdoor moderna: adulta, divertida, centrada en badges y alejada de un clon de Strava.

DA prompt and constraints
Cómo
Comparamos la promesa con el público y descartamos pixel art retro, fantasía, neón gamer y estéticas de gráficos de rendimiento.
2026-06-0517:01
supabasemcpops

Las herramientas de Supabase entraron en el loop de build

Codex se conectó al proyecto Supabase para inspeccionar y verificar la base de datos desde el mismo entorno de trabajo.

Supabase MCP connected
Cómo
Añadimos el servidor MCP de Supabase, completamos OAuth, verificamos la conexión con controles equivalentes al CLI e instalamos las skills de Supabase.
2026-06-0519:57
mvpauthprofile

Llegó el primer loop del MVP

La app recibió su primer flujo de misión, pantallas protegidas, gestión de perfil, revelado de badges y catálogo.

Commits a9ab972 -> e55dc56
Cómo
Construimos lo mínimo alrededor de la auth de Supabase, perfiles rider, catálogo y desbloqueo de badges antes de añadir funciones comunitarias.
2026-06-0519:59
securityrlsreview

La seguridad se trató como un hito de producto

Una revisión del repo trazó la verdadera frontera de confianza: RLS de Supabase, storage, rutas service-role y pantallas protegidas.

Security review completed
Cómo
Empezamos por el modelo de amenazas, filtramos archivos generados, revisamos las superficies runtime y validamos cada pista con código y build.
2026-06-0721:14
aiproofvalidation

La validación de pruebas entró en el loop principal

Las fotos y capturas de actividad se convirtieron en pruebas del producto, con rutas de validación y después límites de uso.

Commits 785a1c4 and 461e543
Cómo
Añadimos la ruta de validación, conectamos los requisitos de cada misión y aplicamos límites para proteger el flujo apoyado por IA.
2026-06-0821:06
mobileonboardingprofile

El onboarding móvil y los permisos de perfil se reforzaron

El recorrido inicial se afinó para reducir bloqueos y gestionar los permisos de forma más clara.

Commit 2af3e34
Cómo
Revisamos auth y onboarding, ajustamos el flujo móvil y alineamos la creación del perfil con las rutas protegidas.
2026-06-1416:42
pricinglandingtests

El precio se volvió simple: 19 € una vez

La landing eliminó la falsa urgencia de lanzamiento y adoptó un pago único y claro para acceder a todo BikeQuest.

Commit 49ee484
Cómo
Primero fijamos el mensaje en tests, después centralizamos el precio en `src/lib/landing.ts` y actualizamos la sección visible.
2026-06-1417:50
badgesprogressdata

El progreso pasó de XP a colección

La gamificación se convirtió en álbum: badges desbloqueados, familias completadas y badges visibles aún bloqueados en lugar de niveles y XP.

Commit f5db8e3
Cómo
Derivamos el progreso del catálogo y `user_badges`, añadimos un helper puro y reutilizamos el cálculo en la app, badges y perfil.
2026-06-1511:27
mvpnavigationux

El MVP se simplificó como panel de badges

Today, el feed y el progreso local salieron del loop rider. Misiones y badges se fusionaron en un panel fácil de recorrer.

Badge-first direction
Cómo
Convertimos los badges en la unidad visual principal, redirigimos pantallas secundarias y centramos el detalle de misión en la prueba.
2026-06-1522:38
uiprofileshare

El panel de misiones y el perfil rider se pulieron

Las tarjetas de misión, acentos naranjas, previews de grupos, tarjetas rider y superficies de compartir hicieron el producto más intencional.

Commits eafecc9 -> deb47f2
Cómo
Mejoramos las mismas pantallas centrales en vez de añadir otras: panel de misiones, jerarquía de tarjetas, perfil y compartir badges.
2026-06-1909:26
uploadwebppreview

Las fotos de perfil se hicieron más ligeras y visibles antes del envío

La subida de avatar ganó una preview local inmediata y conversión WebP en cliente antes de enviar el formulario.

ProfilePhotoInput
Cómo
Escribimos el test de regresión, extrajimos un pequeño componente cliente, redimensionamos a 640 × 640 con canvas y sustituimos el archivo mediante `DataTransfer`.
2026-06-1911:09
aisupabasedocs

Los prompts de validación IA se alinearon con las reglas de producto

Prompts, catálogo, seed, migraciones, documentación y filas activas de Supabase se ajustaron conjuntamente.

Commit 09e7a56
Cómo
Tras revisar la coherencia sin editar, corregimos Roundabout, Dirt Shortcut, 1H Outside y Quiet Road en cada fuente de verdad.
2026-06-1911:28
proofquestux

Las páginas de envío de pruebas se hicieron más claras

El recorrido de prueba se simplificó para que los riders entendieran mejor qué enviar antes de la validación.

Commit e223ee2
Cómo
Limitamos el cambio al uploader y la pantalla de misión, comprobamos el diff, pasamos los tests y subimos un commit enfocado.
2026-06-2014:44
stripecheckoutpaywall

Stripe Checkout convirtió la app en un producto de pago

BikeQuest recibió un pago único real con Stripe, rutas de checkout, webhook y una tabla de acceso pagado.

Commit 1816723
Cómo
Recuperamos la oferta del repo, creamos producto y precio en Stripe, añadimos las rutas, aplicamos la migración Supabase y verificamos producción.
2026-06-2021:34
securitymigrationrls

El refuerzo de seguridad y UX cerró las brechas principales

Redirecciones, propiedad de pruebas, likes del feed, intentos pagados y políticas de Supabase se reforzaron y subieron a `main`.

Commits e38f800 and 64b827e
Cómo
Auditamos las superficies runtime, escribimos tests de esquema, aplicamos la migración y verificamos con tests, lint, build, auditoría y SQL.
2026-06-2022:08
authonboardingcheckout

El funnel de auth y onboarding se hizo más fluido

Los recorridos de registro, login y onboarding se ajustaron después de implantar el modelo de acceso pagado.

Commit f611ca6
Cómo
Replanteamos auth alrededor de la secuencia real de rutas en vez de tratar checkout, onboarding y acceso como historias separadas.
2026-06-2117:15
launchsharingpolish

La UX de lanzamiento, las tarjetas y el compartir rider se pulieron

El layout de misiones, las tarjetas rider, el conjunto de badges y los objetivos de misión recibieron una última pasada de producto.

Commits 2610fcb -> f8a1509
Cómo
Seguimos iterando en superficies visibles: copy de auth, objetivos, espacios, contenido de las tarjetas compartidas y presentación del perfil.
2026-06-2120:20
stripeauthlaunch

La recuperación de cuenta y las promociones completaron el build

Los códigos promocionales de Stripe, la confirmación de auth y el reset de contraseña hicieron el lanzamiento pagado más resistente.

Commits 1d3ed86 and d46ef19
Cómo
Añadimos estados prácticos que evitan soporte: descuentos, confirmación por email y recuperación de contraseña.