
Capacidades
- Back office
- Usuarios y roles
- Sincronización por API
- Email transaccional
Frontend
Backend
Sport Moto Team
CompletadoSport Moto Team es la Yamaha Official Riding School de Girona, con quince años organizando tandas en circuito. Construí su web corporativa como un Next.js 14 independiente que consume la API pública de TrackLap para publicar las tandas automáticamente, y le añadí un back office desde el que el club edita textos, banners, patrocinadores, galerías y opiniones sin tocar código.
El reto
El club tenía dos problemas a la vez: una web antigua que había que rehacer y un calendario de tandas que se actualizaba a mano cada vez que se abría una fecha nueva. La idea era que la web se alimentara sola de TrackLap, la plataforma donde ya gestionan las inscripciones, y que todo lo demás lo pudieran cambiar ellos mismos desde el móvil, a pie de circuito.
Implementación
Calendario que se alimenta solo
Las próximas tandas se leen de la API pública de TrackLap desde un Server Component con revalidación horaria: al publicar una fecha en la plataforma aparece en la web sin que nadie toque nada, con plazas disponibles, precio y enlace de inscripción.
El contenido vive en la base de datos
Textos, banners, patrocinadores e imágenes se guardan en una tabla de bloques de contenido en PostgreSQL; el literal que hay en el componente es solo el respaldo para cuando la fila no existe. Así el cliente cambia cualquier texto de la web sin necesidad de un despliegue.
Panel con usuarios y roles
Back office propio con dos roles: el propietario gestiona usuarios y el editor solo toca contenido. Las contraseñas se guardan con scrypt y la sesión es una cookie HttpOnly firmada con HMAC-SHA256.
Sesiones validadas en dos capas
El middleware corre en Edge, donde no hay base de datos, así que solo comprueba firma y caducidad; la validación autoritativa —usuario activo y versión de token vigente— la hace cada ruta de API en Node. Cambiar una contraseña o desactivar a alguien caduca al instante sus sesiones abiertas.
Panel pensado para el móvil
Se usa a pie de circuito: nada esencial escondido tras un hover, áreas táctiles de 44 px, barra de guardado fija con el número de cambios pendientes y confirmaciones en dos pasos en vez de los diálogos nativos del navegador, que algunos móviles bloquean.
Libro de opiniones con su histórico
Importación idempotente de las 660 opiniones de la web anterior, de 2011 a 2026, y moderación desde el panel: publicar, ocultar, fijar posición, editar el texto y buscar sin depender de los acentos.
SEO generado desde el entorno
El robots y el sitemap se resuelven en cada petición. Prerenderizados se quedaban congelados con el dominio de despliegue y llegaron a anunciarle a Google un canónico equivocado; ahora hay tests de regresión que lo impiden.
El contrato con el backend, bajo test
Vitest cubre el cliente de la API, los componentes con lógica y todo el back office contra un Postgres falso en memoria. Un test de contrato verifica además la respuesta real de producción cuando se ejecuta en modo live.