Skip to content

Repository files navigation

Data Gol

MVP de uma plataforma de estatísticas históricas de jogadores do Brasileirão Série A. Exibe médias históricas (chutes, faltas, cartões, gols/assistências) por jogador, com filtro de time e mando de campo.

Stack

  • Next.js (App Router) + TypeScript + Tailwind CSS
  • Supabase (Postgres + Auth), rodando localmente via Docker durante o desenvolvimento
  • API pública (não-oficial) do Cartola FC (api.cartola.globo.com) como fonte de dados — sem chave, sem custo. Ingestão em batch (job diário)

Setup local

  1. npm install
  2. Copie .env.local.example para .env.local.
  3. Suba o Supabase local (requer Docker rodando): npx supabase start. Copie a anon key, service_role key e a URL da API impressas no terminal para o .env.local.
  4. Aplique as migrations: npx supabase db reset (ou npx supabase migration up).
  5. (Opcional) Gere os tipos do banco: npm run db:types.
  6. Popule o banco com dados mockados do Cartola FC (não precisa de acesso à internet): npm run seed:mocks.
  7. npm run dev e acesse http://localhost:3000.

Ingestão de dados

Fonte: a API pública não-oficial do Cartola FC, que a Globo expõe para o fantasy game do Brasileirão. Sem autenticação, sem cota diária/mensal conhecida — usada por dezenas de projetos open-source há anos, mas sem SLA nem documentação oficial (pode mudar de formato sem aviso).

Endpoints usados (src/features/ingestion/cartola/client.ts):

  • GET /atletas/mercado — lista mestre de jogadores (nome, time, posição)
  • GET /partidas/{rodada} — partidas de uma rodada (mandante/visitante, placar)
  • GET /atletas/pontuados/{rodada} — estatísticas por jogador daquela rodada (campo scout)

A Cartola não expõe um campo de "chutes" nem "cruzamentos" diretamente — chutes é aproximado somando as finalizações por desfecho (FT+FD+FF+G), e cruzamentos fica indisponível (mesma limitação seria mesma com qualquer fonte gratuita). Ver mapScout em src/features/ingestion/cartola/types.ts para o dicionário completo de scouts.

Por padrão (USE_API_MOCKS=true), o cliente lê fixtures JSON locais (src/features/ingestion/cartola/mocks/) em vez de chamar a API real — isso permite montar e testar o dashboard inteiro sem depender de internet. Para usar dados reais, defina USE_API_MOCKS=false.

O orquestrador (src/features/ingestion/orchestrator.ts) sincroniza times/jogadores uma vez por execução e depois percorre as rodadas do Brasileirão (1 a 38) em ordem, parando na primeira rodada ainda não finalizada. Sem limite de requisições conhecido, o histórico da temporada inteira pode ser reconstruído em uma única execução; a rota /api/cron/ingest (protegida por CRON_SECRET) roda isso diariamente via Vercel Cron — ver vercel.json.

Testes

npm test roda os testes de unidade do módulo de ingestão (scouts do Cartola, tracking de rodadas, upserts).

About

Estatísticas históricas de jogadores do Brasileirão Série A — médias de chutes, faltas, cartões, gols e assistências, com filtro por time e mando de campo.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages