SHIP//PROD
Privado · sem demo públicaPeladinhas Sofredores
Projeto autoral · Abr 2026 → atual
Gestão de uma pelada semanal de ponta a ponta, com sorteio de times por algoritmo e overall que se recalcula a cada rodada.
~19k
linhas de código próprio
62
testes passando
0,25
ponto de desnível médio entre times
O problema
Uma pelada semanal entre amigos tem caixa, mensalidade, convidado, presença e discussão sobre time desequilibrado — tudo isso vivia em planilha e grupo de WhatsApp.
O que eu construí
Aplicação web com dois níveis de acesso que cuida do caixa do grupo, da lista de presença, do sorteio de times equilibrados por nível técnico e de um sistema de avaliação entre jogadores que recalcula o overall de cada um a cada rodada, no estilo FIFA.
Decisões e por quê
[ 01 ]
Busca exata até onde ela cabe
O balanceador distribui os confirmados buscando o menor desnível possível, considerando o overall de cada jogador e o equilíbrio de defensivos. Até 16 jogadores faz busca exata com backtracking; acima disso cai para heurística gulosa com refinamento por troca de pares. Nos prints o desnível médio ficou em 0,25 ponto.
[ 02 ]
Snapshot em vez de recálculo retroativo
O overall usado no sorteio fica congelado na presença daquela pelada. O passado não muda quando o presente muda — histórico que se reescreve sozinho é histórico que mente.
[ 03 ]
Estorno em vez de delete
Lançamento errado vira VOIDED e continua auditável. Todo valor monetário é Decimal, nunca float.
[ 04 ]
Monolito de propósito
O público real são algumas dezenas de pessoas. Nada de microsserviço, fila ou cache distribuído: o custo apareceria e o benefício não. A separação acontece onde importa — o cálculo de balanceamento vive em módulo próprio, testado isoladamente.
[ 05 ]
Autorização sempre no servidor
Permissão explícita por view, padrão negar, e nenhum campo vindo do cliente decide o que o usuário pode fazer.
As telas
Capturas reais da aplicação rodando, com dados fictícios gerados pela própria massa de demonstração do projeto. Passe o cursor para a página descer.





No celular
A mesma aplicação na tela pequena, que é onde ela é realmente usada.

Tela 01 de 05
Stack
- Python 3.12
- Django 4.2
- Django REST Framework
- PostgreSQL
- React 18
- TypeScript
- Vite
- GSAP
- Docker Compose
- GitHub Actions
- Pytest
- Playwright
- Ruff



