BROT 74caso de estudio
De la idea a producción

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.

90 commits ~23 días, idea → prod 1 design system desde cero 19 iteraciones de UI 17 suites de integración 87 casos de prueba 7 modelos de dominio 8 tickets de seguridad
Orden de trabajo BRT-01
Proyectobrot74.com
RolDev + producto
Compañero IAClaude Code
Diseño UIClaude
LogoGemini + ChatGPT
PeríodoJunio 2026
DedicaciónPart-Time
Estadoen producción
Licenciapública · All Rights Reserved
01

El proceso

cinco etapas, un mismo hilo de trabajo con IA
Diseño ⇄ desarrollo, en loop 19 versiones · v1 → v24

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.

Desarrollo asistido por IA junio 2026 · part-time

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.

Gestión por tickets Jira (BRT) · branch por ticket

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.

Testing en 4 etapas Vitest + Postgres en Docker

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.

CI/CD → producción GitHub Actions → Vercel

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.

Seguridad y code review automatizados 8 tickets · roadmap completo

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.

02

La receta

lo que efectivamente entró al horno

BROT 74

pila técnica

Producto

Next.js 16 (App Router)frontend
React 19 · TypeScriptUI
Tailwind CSS v4estilos

Datos

PostgreSQL (Neon)base de datos
Prisma ORMschema + migraciones
Vercel Blob · Sharpimágenes

Calidad

Vitest · Docker17 suites · 87 casos
ESLint 9gate en CI
GitHub ActionsCI/CD

Seguridad

Dependabotdeps + security updates
CodeQL · Secret Scanningpush protection
CodeRabbitcode review automático
SonarQube Cloudcalidad de código
eslint-plugin-securitylint

Inteligencia artificial

Claude Codeimplementación
Claudediseño de pantallas
Gemini + ChatGPTdiseño de logo

Operación

Vercelhosting + deploy
Jiraproyecto BRT
Total de herramientas 19, tres asistentes de IA
03

Decisiones de ingeniería

detalles que no se ven, pero sostienen el producto
Inventario

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.

Imágenes

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.

Conversión

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.

Operación

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.

Seguridad

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.