ATHLETIC
DE COÍN
Un proyecto por puro hobby y para apoyar al club. El club necesitaba algo más que una web: publicar noticias sin depender de nadie, llevar el marcador desde el campo, gestionar socios y tener la clasificación al día. Diseño, desarrollo e infraestructura, de la primera maqueta al servidor en producción.

Dos caras.
Web pública
[FANS]- → Próximo partido con cuenta atrás y últimos resultados
- → Calendario completo y acta de cada partido
- → Clasificación con la forma de los últimos partidos
- → Plantilla con ficha y estadísticas de cada jugador
- → Noticias por categoría, optimizadas para buscadores
- → Marcador en directo para seguir el partido
- → Hazte socio y formulario de contacto
Panel del club
[ADMIN]- → Editor de noticias con vista previa y «Crear con IA»
- → Partidos, alineaciones y actas con avisos de incoherencias
- → Mando del directo para anotar desde la banda
- → Estadísticas, hoja y apuntes del entrenador
- → Socios, equipos, patrocinadores y galería
- → Correo del club integrado en el panel
- → Usuarios con roles, permisos por categoría y auditoría
Cómo está montado.
Un servidor Linux propio, una sola entrada pública y servicios separados por responsabilidad. Elige un recorrido para ver qué piezas intervienen.
El visitante entra por la única puerta pública, que sirve la web renderizada en servidor. La web no accede a los datos directamente: los pide a la API como cualquier otro cliente. El formulario de contacto está protegido contra bots.
De estático a plataforma.
- MAY 2026
Arranque
Nuxt 4 con Options API y Tailwind 4. El contenido vivía en ficheros JSON dentro del repositorio.
- JUN 2026
Cloudflare Workers y primer panel
Despliegue en Cloudflare Workers con GitHub Actions y un panel para editar el contenido. Publicar era un commit y un build.
- AGO 2026
Directo sobre Workers y D1
Marcador en vivo sobre Cloudflare Workers y D1, y el sitio estrena dominio propio: athleticdecoin.com.
- SEP 2026
Migración a un VPS
Los bloqueos de IPs de LaLiga afectaban a la infraestructura compartida justo en día de partido, cuando más se usa el directo. La plataforma pasa a un servidor propio.
- SEP 2026
SQLite, API REST y SSR
Los datos salen de git a SQLite detrás de una API propia y la web pasa a SSR. Publicar deja de esperar un build de un minuto: es inmediato.
- A FUTUROPRÓXIMO
Siguiente etapa
Web, panel y API juntos en un monorepo, cada servicio en su contenedor con Docker, Supabase como base de datos, las imágenes en un almacenamiento de objetos compatible con S3 y todos los despliegues automatizados con GitHub Actions.
MonorepoDockerSupabaseAlmacenamiento S3GitHub Actions
Lo que no se ve.
Una sola puerta
Solo una entrada está expuesta a internet; el resto de servicios no es accesible desde fuera. El panel exige iniciar sesión y los permisos se comprueban en el servidor en cada petición, nunca solo en la interfaz.
Una fuente de verdad
Solo la API abre la base. Las estadísticas de cada jugador se derivan del acta y nadie las escribe a mano: corregir una asistencia es corregir el acta.
Respaldos que se ensayan
Instantáneas periódicas de la base con recuentos para verificarlas, restauraciones de prueba y copia fuera del servidor. Recuperar la aplicación entera se midió por debajo de 15 minutos.
Staging espejo
Un segundo entorno con su propia base, datos de producción anonimizados y el correo real apagado. Las migraciones se ensayan ahí antes de tocar producción.
Integraciones con permiso
La clasificación se trae con permiso de la fuente, con cadencia limitada y validada: si la tabla no cuadra consigo misma, no se publica.
SEO y privacidad
Títulos y descripciones con presupuesto de longitud, URLs canónicas y sitemap. La analítica no se carga hasta que el visitante acepta.
Cómo lo construí.
Cada cambio grande del proyecto nació de un problema real del club, no de probar tecnología por probarla.
Entender
Antes de cambiar algo, lo mido. La salida de Cloudflare llegó tras ver la web caer en día de partido, y el paso a base de datos tras comprobar que publicar una noticia obligaba a esperar un minuto de build.
Construir
Cambios pequeños y por fases, con tests automáticos, lint y build en CI. Lo que toca datos o servidor se ensaya en staging, con datos de producción anonimizados, antes de llegar a producción, y siempre hay respaldo para volver atrás.
Documentar
Cada decisión queda escrita en el repositorio: por qué se tomó, qué se descartó y qué errores enseñó. El proyecto se puede mantener y retomar sin depender de la memoria de nadie.
La IA, una herramienta más
Uso asistentes como Claude Code igual que el editor o la terminal: para agilizar tareas repetitivas, moverme más rápido por el código o preparar tests. La arquitectura, el código que llega a producción y su mantenimiento son responsabilidad mía, y los conozco al detalle.
Crear con IA
También integré IA para los editores del club: el panel genera un prompt con las categorías y los límites de longitud para SEO, y la respuesta vuelve en JSON, se valida y rellena la noticia, lista para revisar antes de publicar.
Con qué.
¿Algo así?