Sauce Boxeo
Gestionar el cobro de cuotas, alumnos y horarios de un gimnasio
Translation pending
AI summary · website content
Agregador de corridas de rua: reunimos provas de vários sites de inscrição em um só lugar, com data, local, distâncias, preço e link oficial.
Translation pending
Sports & fitnessTypeScript · CSSGitHub @AndersonBFOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗<<<<<<< HEAD
Agregador de corridas de rua por região. Reúne provas cadastradas em diversos sites de inscrição (Ticket Sports, Sympla, Doity, etc.) em um só lugar, com nome, data, local, distâncias, preço e link oficial de inscrição.
# 1. Instalar dependências
npm install
# 2. Subir o banco (Postgres na porta 5433)
npm run db:up
# 3. Criar as tabelas
npm run db:push
# 4. Popular o banco:
npm run scrape # corridas REAIS do PR (recomendado) — ver seção Scraping
# ou
npm run db:seed # 9 corridas reais fixas (demo offline, sem internet)
# 5. Rodar em desenvolvimento
npm run dev
Acesse:
.env → ADMIN_PASSWORD).env)| Variável | Descrição |
|---|---|
DATABASE_URL | conexão Postgres |
ADMIN_PASSWORD | senha do painel admin |
ADMIN_SESSION_SECRET | segredo para assinar o cookie de sessão |
NEXT_PUBLIC_DEFAULT_STATE | UF padrão exibida na home (ex: SP) |
NEXT_PUBLIC_SITE_NAME | nome do site |
Tudo é gerenciável pelo painel /admin: criar, editar, publicar/arquivar e
excluir corridas. Cada corrida guarda o link de inscrição do site de origem.
A coleta é plugável: cada site vira um arquivo em src/scrapers/ implementando
a interface Scraper (ver src/scrapers/types.ts). Os scrapers ativos ficam
registrados em src/scrapers/index.ts.
Scraper principal: corridasbr (src/scrapers/corridasbr.ts)
Lê os calendários estaduais do corridasbr.com.br (Calendario.asp + 2 + 3,
cobrindo vários meses), abre a página de cada evento e extrai nome, data,
cidade, local de largada, distâncias, organizador e o link real de inscrição
(Ticket Sports, Sympla, Doity, etc.) — que o site guarda em siteevento.asp?c=.
Depois acessa a própria página de inscrição para pegar também:
og:image → JSON-LD → primeiro <img> de conteúdo
(validado por HEAD para não gravar imagem quebrada);R$ X,XX do HTML, com heurística que ignora taxas (<R$20)
e premiação (>R$900 ou teto > 5× o piso).Plataformas 100% JavaScript (ex: Ticket Sports) não expõem preço no HTML, então nesses casos o preço fica "Sob consulta". Funciona para qualquer UF.
npm run scrape # usa a UF de NEXT_PUBLIC_DEFAULT_STATE (PR)
npm run scrape -- SP # força a UF
CORRA_SCRAPE_LIMIT=5 npm run scrape -- PR # limita nº de eventos (testes)
O runner deduplica por (source, externalId) (onde externalId é o id do
evento no corridasbr), então rodar várias vezes atualiza em vez de
duplicar. A fonte exibida (source) é a plataforma real de inscrição.
Agende com cron (Linux) ou Agendador de Tarefas (Windows) para manter atualizado — ex: diariamente.
O
src/scrapers/sympla.tspermanece como exemplo de outra abordagem (API JSON), mas não está ativo no registro.
⚠️ Antes de ativar um scraper: confira os Termos de Uso e o
robots.txtde cada site. Prefira APIs oficiais quando existirem. Os exemplos são defensivos (retornam vazio em caso de erro) e os endpoints/seletores podem precisar de ajuste conforme os sites mudam.
5afd86c7261cc96f7d45edb53e56d29d161ae577