🛠️ Sports‑Forex API: primeiros passos para uma API pública focada em esportes e finanças
- #Node.js
Nos últimos dias iniciei o desenvolvimento da Sports‑Forex API, uma API pública com foco em dados esportivos (principalmente futebol), odds e conversão de moedas em tempo real.
A ideia é criar um serviço backend sólido e escalável, que sirva tanto como portfólio técnico quanto como base para projetos voltados a análise de esportes, apostas ou automações.
⚙️ Arquitetura e decisões técnicas
Logo de início, priorizei uma estrutura modular e escalável:
- Separação de responsabilidades: arquitetura baseada em
routes → controllers → services
, facilitando testes, manutenção e extensão. - Swagger autogerado: documentação viva dos endpoints, facilitando o uso e integração futura por terceiros.
- Transformação de dados brutos: a API externa usada (API-Football) retorna objetos extensos; optei por filtrar e simplificar a resposta, expondo apenas dados essenciais como ID da partida, status, placares e times envolvidos.
⚡ Cache de ligas por parâmetros
Um dos pontos mais interessantes da lógica atual é o sistema de cache para ligas de futebol. Ele funciona da seguinte forma:
- A API tenta buscar a liga com base nos parâmetros
season
,country
etype
. - Caso não encontre, realiza uma sequência de buscas cada vez mais genérica (
season + country
, depois sóseason
, depois sem filtro). - O resultado é salvo em um cache in-memory para acelerar futuras chamadas com os mesmos filtros.
Essa abordagem melhora a performance e reduz drasticamente o número de requisições à API externa, além de oferecer flexibilidade ao consumidor da API.
js
// Exemplo de chave de cache
const cacheKey = `${season}-${country}-${type}`;
🎯 Flexibilidade na entrada
Outro diferencial da API é a forma como os parâmetros são tratados:
- No endpoint de resultados (
/soccer/results
), o usuário pode passar tanto o nome quanto o ID da liga. - A lógica interna resolve e valida automaticamente esse valor usando o cache de ligas.
- Isso torna a API mais amigável e compatível com diferentes fontes de dados no front.
📦 Próximos passos
Esse é só o início do projeto. Os próximos planos incluem:
- Autenticação via JWT e controle por API Key
- Monitoramento (com Prometheus/Grafana ou Sentry)
- Deploy escalável, possivelmente em AWS (Elastic Beanstalk ou EC2) — também como oportunidade de ganhar mais experiência com a nuvem.
📷 Extras
Estou compartilhando o progresso com prints de:
- Código do serviço de ligas (via Carbon)
- Resposta do Swagger com o retorno simplificado de
/results
- Overview dos endpoints disponíveis até o momento
🔗 Repositório aberto
O projeto está disponível publicamente no GitHub:
👉 github.com/dig-ie/sports-forex-nodejs-api
Feedbacks, colaborações ou sugestões são super bem-vindos!