Sobre o projeto
O NK Omladinac Niza é o repositório do site oficial do clube de futebol de mesmo nome de Niza (Município de Koška). O site foi desenvolvido com Astro, Tailwind CSS v4 e TypeScript e está hospedado no GitHub Pages. A fonte ao vivo dos dados esportivos é o HNS Semafor.
A principal funcionalidade é a atualização automatizada de conteúdo. Três raspadores e uma fonte manual preenchem os dados:
1. HNS Semafor (dados esportivos) — o script scripts/scrape.mjs usa um parser Cheerio para extrair o nome do clube, estádio, endereço, escudo, competição e temporada atuais, a tabela completa da liga com escudos e desempenho recente, todas as partidas da temporada em todas as competições (liga e copa), detalhes de partidas disputadas (escalas, gols, cartões, árbitros, espectadores), jogadores com fotos, números, posições e estatísticas de jogos, além de rankings de artilharia, cartões e mais partidas. Todas as competições em que o clube participa são raspadas, por categoria etária (seniores e iniciantes sub-11), e a lista de competições é obtida por meio do handler getCompetitions do Semafor. O resultado é src/data/hns.json com dados por competição e uma visão unificada dos seniores.
2. Notícias do Facebook — scripts/scrape-facebook.mjs usa a Graph API v21.0 para buscar os posts mais recentes da página @omladinacniza. As imagens são baixadas localmente porque as URLs do CDN do FB expiram em uma ou duas semanas. São necessários os GitHub Secrets FB_PAGE_ID e FB_ACCESS_TOKEN.
3. Álbuns do Facebook (galeria) — scripts/scrape-facebook-albums.mjs busca todos os álbuns e metadados de fotos, com uma cota por ano calendário (FB_PHOTOS_PER_YEAR, padrão 200). Para cada foto, são salvos uma miniatura WebP de 500 px e as dimensões; a grade exibe a miniatura, e o lightbox exibe a original. Imagens de perfil e capa são ignoradas.
4. Partidas amistosas — o único arquivo que pode ser editado manualmente é src/data/friendlies.json, com instruções em friendlies.README.md; ele também pode ser editado pelo celular via GitHub.
Os raspadores gravam arquivos apenas quando o conteúdo é alterado, portanto não criam commits e implantações desnecessários. O workflow do GitHub Actions scrape-and-deploy.yml é executado por agendamento cron a cada 30 minutos, em todo push para main e manualmente. Ele executa todos os três raspadores, commita as alterações e depois recompila e implanta; o job de build deliberadamente não raspa novamente para que o site publicado e o repositório não divirjam.
A estrutura do projeto inclui componentes (Header, Footer, cartões, tabela), um layout com configurações de SEO/OG/favicon/manifesto/RSS/View Transitions, bibliotecas para caminho base, partidas unificadas, declinação croata de números e formatação de posts do Facebook, e páginas: páginas .astro estáticas, perfis de jogadores, detalhes de partidas, imagens OG dinâmicas por partida (satori e resvg), feed RSS, calendário em formato .ics para assinatura e um manifesto PWA. Os estilos usam Tailwind v4 @theme com as cores e fontes do clube.
O desenvolvimento local exige Node.js 22.12+. Os scripts incluem servidor de desenvolvimento com hot reload, scrape:hns, scrape:facebook, scrape:fb-albums, scrape (todos os três), thumbs para miniaturas WebP, build (que automaticamente raspa primeiro), astro build sem raspagem, check para verificação de tipos e preview da build de produção.
A implantação é feita no GitHub Pages por meio do GitHub Actions, com o domínio omladinacniza.hr configurado via public/CNAME (DNS da deSEC), enquanto SITE e BASE são definidos em astro.config.mjs e podem ser substituídos pelas variáveis ASTRO_SITE e ASTRO_BASE. Todo o conteúdo do clube (logotipo, fotos, história) é propriedade do NK Omladinac Niza, e o código está disponível gratuitamente para inspirar outros clubes.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.