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
.htaccesspara 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.