Un sitio de venta de pan artesanal, construido de punta a punta con IA como parte del equipo.
brot74.com es un e-commerce de pre-venta de pan con reserva de stock, fechas de entrega y panel de administración. Todo el diseño, la implementación, el testing y el pipeline de CI se hicieron trabajando junto a Claude.
El proceso
Antes de tocar código se diseñó desde cero un design system propio para BROT 74: tipografía, paleta, componentes y sellos. Cada cambio de UI nació después como un export de diseño (Claude) y se tradujo a código con Claude Code en el mismo ciclo: hero, selector de fechas, modal de producto, checkout. El logo se generó aparte con Gemini y ChatGPT. No fue un diseño único 'entregado' — fueron 19 iteraciones documentadas en el historial de commits.
Desde el scaffold inicial (create-next-app) hasta la lógica de negocio: reserva de stock con TTL, fechas de entrega con cupo, panel de admin, autenticación, upload de imágenes. Migración de SQLite a PostgreSQL en la primera semana. Todo part-time, en junio de 2026.
Los bugs y features se rastrean en Jira (proyecto BRT). Cada ticket vive en su propia rama y termina en un PR contra main; los bugs que aparecen en el camino se resuelven en el mismo PR si están relacionados.
Cobertura de integración priorizada por riesgo: primero carrito/órdenes/entregas, después admin, después catálogo/auth, por último waitlist/uploads/cron. 17 suites y 87 casos de prueba corriendo contra una base real, no mocks.
Cada PR corre lint y la suite de integración completa antes de poder mergear a main; ESLint es gate obligatorio. El merge dispara build y deploy en Vercel.
Una segunda ronda, ya con el sitio en producción: branch protection en main (lint + integration obligatorios), Dependabot con actualizaciones de seguridad, CodeQL y Secret Scanning con push protection, y CodeRabbit + SonarQube Cloud revisando cada PR junto con eslint-plugin-security en el lint. De paso se sacaron los fallbacks hardcodeados de contraseña y JWT: hoy el build falla si falta la variable de entorno, en vez de caer en un valor por defecto inseguro.
La receta
BROT 74
pila técnica
Producto
Datos
Calidad
Seguridad
Inteligencia artificial
Operación
Decisiones de ingeniería
Reserva de stock con TTL de 15 minutos
El carrito reserva stock por tiempo limitado en vez de bloquearlo hasta el pago: evita overselling sin dejar productos 'fantasma' retenidos por carritos abandonados.
Pipeline de optimización en el upload
Cada imagen se procesa y comprime al subirla (Sharp) antes de ir a Vercel Blob, y se rechazan archivos corruptos antes de llegar al storage.
Waitlist por WhatsApp
Cuando no hay fechas de entrega disponibles, el sitio no muestra un estado vacío mudo: pide el WhatsApp del cliente para avisar cuando se abra cupo.
Cron ajustado al plan real de hosting
La limpieza de reservas expiradas corre por cron; la frecuencia se ajustó a diario para funcionar dentro de los límites del plan Vercel Hobby, sin sorpresas de facturación.
Sin fallbacks inseguros en la autenticación
JWT_SECRET y ADMIN_PASSWORD ya no tienen un valor hardcodeado de respaldo: si falta la variable de entorno, la app tira error en vez de arrancar con una contraseña por defecto.