Rinha do Campus IV
O que é
A Rinha do Campus IV é a plataforma que gerencia um torneio de League of Legends na UFPB. Cuido da liderança técnica e da arquitetura, e o sistema está em produção.
Contexto
Eu organizava, com alguns amigos, um torneio de League of Legends no Campus IV da UFPB. O maior problema da primeira edição não foi o jogo, foi a logística de registrar os pagamentos das inscrições. Cada membro de uma equipe pagava a sua parte separado. A gente, da organização, tinha que cobrar os jogadores o tempo todo para mandarem o comprovante do PIX pelo WhatsApp, e depois juntar tudo para saber quais equipes estavam de fato inscritas.
Para a segunda edição, decidi que não íamos passar por isso de novo e criei um site para gerenciar o torneio: nele, as equipes se inscrevem e fazem o pagamento via PIX pela própria plataforma.
O problema
Três frentes precisavam funcionar juntas: inscrição de participantes, pagamento com confirmação confiável e um painel administrativo para quem organiza o torneio acompanhar tudo. A parte mais delicada é o pagamento — o participante paga fora da minha aplicação (Mercado Pago) e eu preciso saber, sem que ele precise atualizar a página, quando isso acontece.
Como resolvi
O front-end é Next.js e React com TypeScript; a API é Spring Boot com Java, autenticação via JWT e Spring Security, e PostgreSQL como banco. A confirmação de pagamento chega por webhook do Mercado Pago, atualiza o estado da inscrição no banco e notifica o cliente em tempo real por WebSocket (STOMP) — o participante vê a inscrição confirmada sem dar refresh.
O que eu troquei pelo quê
Troquei o processo manual pela validação automática. Antes, o jogador fazia o PIX, tirava print do comprovante e mandava pelo WhatsApp para a organização, que conferia um por um e confirmava a inscrição na mão. Agora o pagamento é por PIX dentro da própria plataforma e a confirmação chega sozinha, pelo webhook do Mercado Pago. Ninguém precisa conferir comprovante.
O preço disso é que o fluxo de pagamento deixou de ser uma conversa no WhatsApp e virou código meu. Passei a depender de um serviço de terceiros e a ter que tratar webhook, estado da inscrição e notificação em tempo real. Se algo falha ali, o jogador pagou e não vê a inscrição confirmada. Em troca, a organização parou de gastar tempo com conferência manual e acabou o risco de comprovante perdido na conversa ou aprovado por engano.
Resultado
A plataforma está em produção, processando inscrição e pagamento de participantes reais do torneio.
O que eu faria diferente
Na época eu não conhecia AWS, então resolvi a infraestrutura com o que eu sabia usar. O servidor roda em uma máquina local, exposta para a internet por um Cloudflare Tunnel, e as mídias do site ficam hospedadas no Imgur, enviadas pela API dele. Funcionou e colocou o sistema no ar. Só que a disponibilidade passa a depender de uma máquina física, e as imagens ficam num serviço que não controlo.
Hoje eu hospedaria a aplicação na AWS e guardaria as mídias em buckets S3. Essas duas mudanças já estão abertas como as próximas issues do projeto.
Links
- Site: rinhacampusiv.org
- Repositórios: front-end e API