Construimos una app de reservas funcional —inicio de sesión, un calendario de horarios disponibles, pagos y recordatorios por correo— de principio a fin en 30 minutos, y registramos cada paso. No una demo que se queda en una vista previa bonita. Una de verdad, en un dominio real. Aquí están el stack y los prompts.
El stack
No necesitas mucho, y los constructores con IA conectan la mayor parte por ti:
- Supabase — base de datos Postgres, más Auth (correo/contraseña, magic links y OAuth con Google o GitHub) y seguridad a nivel de fila. Esta es la columna vertebral.
- Stripe — el paso de pago para una reserva de pago.
- Resend — los correos de confirmación y recordatorio.
Supabase es la pieza que importa: te da una base de datos real, autenticación real y almacenamiento desde un solo panel, y por eso la mayoría de los constructores con IA lo integran directamente.
La construcción, prompt a prompt
Con aproximadamente cinco prompts llegas:
- Andamiaje — «Una app de reservas. Inicio de sesión por correo. Un calendario que muestra horarios de 30 minutos disponibles.» Obtienes una app en marcha con autenticación en minutos.
- Modelo de datos — una tabla
slotsy una tablaappointments, con seguridad a nivel de fila para que un usuario con sesión iniciada solo vea sus propias reservas. - Pagos — un paso de pago con Stripe antes de confirmar un horario.
- Notificaciones — un correo con Resend al confirmar, y un recordatorio antes de la cita.
- Administración — una página que lista las reservas de hoy.
La parte que la IA hace mal
Este es el bug que los constructores con IA entregan por defecto, siempre: la doble reserva. De forma ingenua, el código generado lee los horarios disponibles y luego escribe la reserva, y si dos personas hacen clic en el mismo horario en el mismo instante, ambas escrituras tienen éxito. Has vendido un mismo horario dos veces.
La solución es convertir la reserva en una única transacción de base de datos con
bloqueo a nivel de fila: bloquea la fila del horario, comprueba que sigue libre,
escribe la cita y libera. En Supabase eso es una transacción de Postgres (un
SELECT ... FOR UPDATE dentro de una función), no dos consultas separadas desde el
cliente. La IA casi nunca recurrirá a esto a menos que se lo pidas. Así que pídelo:
«Haz que la reserva del horario sea una única transacción de Postgres con bloqueo a nivel de fila para que dos usuarios no puedan reservar el mismo horario.»
Esta es la diferencia entre una demo y algo que dejarías que tocara un cliente, y es justo el tipo de lógica crítica para la corrección que la IA todavía necesita que un humano detecte.
Lánzala
Una app funcional en una URL de vista previa todavía no es un producto. Apúntala a tu dominio —es un trabajo de 10 minutos— y estás en vivo.
En resumen
Los treinta minutos son reales, con un asterisco: la IA te lleva al 95% rápido, y el último 5% —la concurrencia, las reglas de seguridad, los casos límite de los que depende el dinero— es donde te ganas el pan. Sabe dónde está ese 5% y lanzarás algo real, no una captura de pantalla.