FitKid Schedule
Aplicación web creada para resolver un problema concreto: los horarios de los campeonatos de FitKid llegaban en PDF, se distribuían por WhatsApp con errores y los padres no sabían a qué hora competían sus hijos. FitKid Schedule lo resuelve con una búsqueda rápida desde el móvil.
El problema
El horario de competición llegaba en PDF. El delegado lo reenviaba por WhatsApp. Los padres preguntaban a qué hora era, alguien respondía el número equivocado, otro corregía... Confusión garantizada en cada campeonato.
La solución
-
Búsqueda por nombre
Escribe el apellido del deportista y la app muestra su turno al instante. Sin scrolls infinitos por un PDF.
-
Filtros por categoría y género
Alevín, Benjamín, Infantil... filtra por categoría y género para reducir el listado al tramo que te interesa.
-
Highlight de club
El parámetro ?club= en la URL resalta todos los participantes de un club. Comparte el enlace y el filtro viaja con él.
-
PWA instalable
Sin App Store. Se instala desde el navegador y funciona en cualquier móvil del equipo técnico.
Stack técnico
Frontend
- Astro 5 (SSR)
- TypeScript
- CSS puro
- React islands
Infraestructura
- Vercel
- PWA / Service Worker
- Middleware Astro
Datos
- Markdown + Git
- Zod (Content Collections)
- Scripts TS (PDF → MD)
Decisiones técnicas
-
Sin base de datos
Los horarios viven en ficheros Markdown versionados con Git. Un deploy es publicar. No hay panel de admin, no hay SQL, no hay coste operativo.
-
Auth simple por contraseña
Dos roles (admin y viewer) gestionados en middleware de Astro con cookies httpOnly. El admin ve datos sensibles; el viewer solo ve los horarios publicados. Sin OAuth, sin JWT, sin librería externa.
-
Highlight sin estado de servidor
El club favorito se guarda como parámetro ?club= en la URL. El estado es la URL. Se puede compartir el enlace con el filtro ya aplicado sin necesitar backend ni sesión.
Open source y GDPR
El código es público en GitHub. El repo público usa datos ficticios, lo que satisface el RGPD sin fricción: el código y los datos están separados por diseño.
Horario completo de un vistazo
Todos los turnos y categorías del día en una sola página, sin paginación. Diseñado para que el árbitro o el coordinador pueda escanear el horario rápidamente.
Búsqueda por nombre
Escribe un nombre y el sistema lo resalta al instante en toda la vista. Los padres pueden encontrar el turno de su hijo sin leer fila por fila.
Tu club siempre visible
Configura tu club con una variable de entorno y todos sus deportistas aparecen en cian automáticamente. Sin tocar el código, sin redeployar.
Pensado para el móvil
Los deportistas y sus familias consultan el horario desde el teléfono en el propio pabellón. Sin app que instalar, funciona como PWA.
¿Curioso por los detalles?
El código es abierto. Puedes ver la implementación del middleware de auth, la estructura de los datos Markdown y los scripts de importación desde PDF.