Este projeto nasceu da necessidade de criar um sistema de ranking/leaderboard completo, do banco de dados à interface — sem depender de frameworks pesados, priorizando performance e controle total sobre cada camada da aplicação.

Arquitetura

A API foi construída em PHP puro, seguindo uma estrutura organizada em camadas (Core, Database, Controllers), com injeção de dependências via um Container próprio. O frontend consome essa API e é servido no mesmo subdomínio, eliminando a necessidade de configurações complexas de CORS e simplificando o deploy.

Desafios técnicos resolvidos

  • Consultas de ranking eficientes: uso de DENSE_RANK(), CTEs e subqueries correlacionadas no MySQL para calcular posições e recordes pessoais diretamente no banco, sem processamento redundante em PHP.
  • Roteamento unificado: configuração de .htaccess para que API e frontend coexistam no mesmo domínio, com o Apache direcionando requisições /api/* para o backend e as demais rotas para a aplicação client-side.
  • Ambiente reproduzível: containerização com Docker (PHP + Apache + MySQL), garantindo que o comportamento local seja idêntico ao de produção — incluindo detalhes sutis como reescrita de URLs que só existem em ambientes Apache reais.
  • Deploy automatizado: pipeline de CI/CD via GitHub Actions, com deploy via SSH para hospedagem Hostinger, disparado automaticamente a cada push.

Stack utilizada

PHP puro (arquitetura em camadas), MySQL (window functions e CTEs), Apache (mod_rewrite), Docker, GitHub Actions.

Demo
https://ranking.rodrigoalvesguerra.com.br/