Sobre el proyecto

NK Omladinac Niza es el repositorio del sitio web oficial del club de fútbol del mismo nombre de Niza (municipio de Koška). El sitio está construido con Astro, Tailwind CSS v4 y TypeScript, y está alojado en GitHub Pages. La fuente en vivo de datos deportivos es HNS Semafor. La función principal es la actualización automatizada de contenidos. Tres scrapers y una fuente manual alimentan los datos: 1. HNS Semafor (datos deportivos): el script scripts/scrape.mjs utiliza un analizador Cheerio para extraer el nombre del club, estadio, dirección, escudo, competición y temporada actuales, toda la tabla de liga con escudos y estado de forma, todos los partidos de la temporada en todas las competiciones (liga y copa), detalles de partidos jugados (alineaciones, goles, tarjetas, árbitros, espectadores), jugadores con fotos, números, posiciones y estadísticas de presencias, y listas de clasificación de goleadores, tarjetas y más presencias. Se rastrean todas las competiciones en las que participa el club, por grupos de edad (seniors y principiantes U-11), y la lista de competiciones llega mediante el manejador getCompetitions de Semafor. El resultado es src/data/hns.json con datos por competición y una vista unificada del equipo senior. 2. Noticias de Facebook: scripts/scrape-facebook.mjs utiliza Graph API v21.0 para obtener las publicaciones más recientes de la página @omladinacniza. Las imágenes se descargan localmente porque las URL de la CDN de FB caducan en una o dos semanas. Se requieren los secretos de GitHub FB_PAGE_ID y FB_ACCESS_TOKEN. 3. Álbumes de Facebook (galería): scripts/scrape-facebook-albums.mjs obtiene todos los álbumes y metadatos de fotos, con una cuota por año natural (FB_PHOTOS_PER_YEAR, 200 por defecto). Por cada foto se guardan una miniatura WebP de 500 px y sus dimensiones; la cuadrícula muestra la miniatura y el lightbox muestra el original. Se omiten las imágenes de perfil y de portada. 4. Partidos amistosos: el único archivo que puede editarse manualmente es src/data/friendlies.json, con instrucciones en friendlies.README.md; también puede editarse desde un teléfono mediante GitHub. Los scrapers escriben archivos solo cuando el contenido ha cambiado, por lo que no crean commits ni despliegues innecesarios. El workflow de GitHub Action scrape-and-deploy.yml se ejecuta con una programación cron cada 30 minutos, en cada push a main y manualmente. Ejecuta los tres scrapers, confirma los cambios y luego reconstruye y despliega; el trabajo de compilación deliberadamente no vuelve a rastrear para que el sitio publicado y el repositorio no diverjan. La estructura del proyecto incluye componentes (Header, Footer, tarjetas, tabla), un layout con ajustes de SEO/OG/favicon/manifest/RSS/View Transitions, bibliotecas para la ruta base, partidos unificados, declinación de números en croata y formato de publicaciones de Facebook, y páginas: páginas .astro estáticas, perfiles de jugador, detalles de partido, imágenes OG dinámicas por partido (satori y resvg), feed RSS, calendario en formato .ics para suscripción y un manifest PWA. Los estilos usan Tailwind v4 @theme con los colores y fuentes del club. El desarrollo local requiere Node.js 22.12+. Los scripts incluyen un servidor de desarrollo con recarga en caliente, scrape:hns, scrape:facebook, scrape:fb-albums, scrape (los tres), thumbs para miniaturas WebP, build (que primero rastrea automáticamente), astro build sin rastreo, check para comprobación de tipos y vista previa de la compilación de producción. El despliegue se realiza en GitHub Pages mediante GitHub Actions, con el dominio omladinacniza.hr configurado a través de public/CNAME (DNS de deSEC), mientras que SITE y BASE se establecen en astro.config.mjs y pueden sobrescribirse con las variables ASTRO_SITE y ASTRO_BASE. Todo el contenido del club (logotipo, fotos, historia) es propiedad de NK Omladinac Niza, y el código está disponible libremente para que otros clubes puedan inspirarse en él.