
Autor
El proyecto
ReservaYa es una web para reservar canchas deportivas en Arequipa. Los jugadores buscan por distrito o cerca de su ubicación, ven fotos, horarios libres y reseñas, y reservan desde la misma página. Los dueños de complejos tienen un panel para publicar sus canchas, gestionar reservas y recibir avisos por correo. Está en producción en reservaya.site.
Cómo lo construyeron
Un monorepo con dos aplicaciones: la web pública y los paneles en Next.js, y una API en NestJS que concentra los datos, la disponibilidad, los permisos y la sesión, guardada en una cookie segura. Un paquete compartido define los contratos con Zod para que web y API hablen el mismo idioma. Trabajamos por especificaciones numeradas (más de 70) y cada cambio pasaba por tipos, linter, pruebas y CI antes de publicarse en Vercel y Render.
Retos superados
Rehicimos el proyecto dos veces sin perder datos: la web pasó de Astro a Next.js y la API se reescribió en TypeScript con NestJS, manteniendo intacta la base de datos que ya estaba en producción. También tuvimos que cuidar los permisos entre roles (jugador, dueño, administrador y técnico), para que nadie viera ni modificara reservas ajenas, y que la página no "saltara" mientras cargaba en el celular.
Lo que aprendieron
Que migrar un sistema vivo exige ir por partes y tener siempre un camino de vuelta. Y que lo que más valora el usuario no es la tecnología, sino reservar en pocos toques y que la información de la cancha sea real.
Qué harían diferente
Elegiríamos el stack definitivo desde el inicio para no migrar dos veces. Y hablaríamos antes con dueños de canchas para priorizar lo que de verdad necesitan.