image

Unlimited bootcamps + English course forever

80
%OFF
Article image
Diêgo Barros
Diêgo Barros16/04/2025 16:30
Share
Microsoft Certification Challenge #3 DP-100Recommended for youMicrosoft Certification Challenge #3 DP-100

🛠️ 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 e type.
  • 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!

image

image

Share
Recommended for you
Microsoft 50 Anos - Prompts Inteligentes
Microsoft 50 Anos - GitHub Copilot
Microsoft 50 Anos - Computação em Nuvem com Azure
Comments (1)
Arthur Carneiro
Arthur Carneiro - 16/04/2025 18:01

Excelente implementação até agora! A separação de responsabilidades e o cache in-memory vão realmente otimizar a performance. 

Recommended for youMicrosoft Certification Challenge #3 DP-100