CKM Combat Academy
Web para CKM Combat Academy, un club de deportes de contacto de Mos, con horario, tarifas y solicitud de clase de prueba

- Mi papel
- Diseño, desarrollo, modelo de contenido y despliegue
- Año
- 2026
- Estado
- En producción
Web del club CKM Combat Academy, en Mos (Pontevedra): boxeo, kickboxing, MMA y preparación física, con horario semanal, tarifas, entrenadores y galería. Antes del proyecto el club vivía en Instagram, y quien buscaba un gimnasio no encontraba ni el horario ni el precio sin escribir un mensaje.
Todo lo que se publica vive en el panel de Sanity y lo edita el propio club; las solicitudes de clase de prueba viajan por separado a MongoDB y no pasan por el CMS. La web decide qué es contenido y qué son datos de personas, y no los mezcla.
Lo que tiene dentro
Dos fuentes con una regla: el repositorio es el suelo y el panel manda cuando tiene documentos. Las dos validan contra el mismo esquema de zod, así que la web se clona y se levanta sin credenciales de nada.
El horario no repite texto: cada franja apunta por referencia a su actividad, así que renombrar «Kickboxing» no obliga a repasar veinte casillas del calendario.
La solicitud de clase de prueba es una Server Action con validación de zod y un límite de cinco envíos cada diez minutos: un formulario público sin freno es una invitación al spam.
Una rama por entorno (dev, test y prod) y sólo la de producción se indexa, decidido por rama y no por `VERCEL_ENV`, porque en el proyecto de test esa rama también es «producción».
Stack
- Next.js 16
- TypeScript
- Tailwind CSS 4
- Sanity
- MongoDB
- zod
- Vercel
