Case study

Bolão Copa do Mundo 2026

Plataforma full-stack para criação e gerenciamento de bolões da Copa do Mundo de 2026, desenvolvida com Next.js, TypeScript, Prisma e MySQL. A aplicação possui autenticação, bolões privados com convites, palpites protegidos até o início das partidas, sincronização automática dos jogos com uma API externa e sistema próprio de pontuação e ranking.

jun. de 2026jun. de 2026
copa-do-mundo

Tecnologias

TypeScriptNext.jsReactshadcn/uiTailwind CSSMySQLPrismaJWTZod

O problema

Organizar um bolão entre grupos de pessoas envolve mais do que simplesmente armazenar palpites. É necessário controlar participantes, impedir alterações após o início das partidas, esconder previsões antecipadamente, manter resultados atualizados e calcular rankings de forma consistente conforme diferentes regras de pontuação. O objetivo era transformar esse processo em uma plataforma centralizada e automatizada, eliminando controles manuais e permitindo que cada grupo tivesse seu próprio bolão e classificação.

A solução

Foi desenvolvida uma aplicação full-stack em Next.js utilizando App Router e rotas de API na própria aplicação. Usuários podem se cadastrar, autenticar, criar bolões e convidar outros participantes através de códigos de convite. Cada bolão mantém seus próprios membros, palpites e ranking. Os jogos da Copa do Mundo são sincronizados a partir de uma API externa de futebol. Os dados recebidos são normalizados e persistidos no banco utilizando Prisma, permitindo atualizar automaticamente horários, status e resultados das partidas. Os palpites podem ser criados ou alterados somente antes do início de cada jogo. Além disso, os palpites dos demais participantes permanecem ocultos até a partida começar. Após a conclusão dos jogos, o sistema aplica regras próprias de pontuação e recalcula os rankings de cada bolão automaticamente.

Responsabilidades

Responsável pelo desenvolvimento completo da aplicação, incluindo definição das regras do produto, modelagem do banco de dados, autenticação, criação e gerenciamento dos bolões, fluxo de convites, gerenciamento de membros e desenvolvimento do sistema de palpites. Também fui responsável pela integração com a API externa de partidas, normalização e sincronização dos jogos, implementação das regras de bloqueio dos palpites, cálculo de pontuação, atualização dos rankings e construção da interface utilizando Next.js e componentes reutilizáveis.

Decisões técnicas

Next.js foi utilizado como framework full-stack, permitindo concentrar interface e endpoints da aplicação dentro do mesmo projeto e reduzir a complexidade operacional de manter frontend e backend independentes. TypeScript foi utilizado em toda a aplicação para aumentar a segurança de tipos, enquanto Zod é utilizado para validação de dados de entrada. Prisma foi adotado como ORM e camada de acesso ao banco, com MySQL/MariaDB como banco relacional. O modelo utiliza relações e restrições compostas para garantir consistência entre usuários, bolões, jogos, palpites e pontuações. A autenticação utiliza JWT e hashes de senha com bcrypt. A sincronização das partidas foi implementada através de um serviço dedicado que consome uma API externa e utiliza operações de upsert, permitindo criar novos jogos ou atualizar partidas já existentes de maneira idempotente. A lógica de pontuação foi isolada em um serviço próprio, permitindo atribuir diferentes valores para placar exato, resultado correto, saldo de gols e outras combinações. Os palpites são bloqueados de acordo com horário e status da partida e permanecem ocultos para outros participantes antes do início do jogo, garantindo maior integridade competitiva.

Resultados

O projeto resultou em uma plataforma funcional capaz de gerenciar múltiplos bolões independentes, participantes, convites, partidas, palpites e rankings. A sincronização externa reduz a necessidade de atualizar jogos e resultados manualmente, enquanto o cálculo automatizado de pontuação mantém a classificação de cada bolão atualizada. As regras de bloqueio e visibilidade dos palpites também garantem que os participantes não possam alterar previsões após o início da partida nem visualizar antecipadamente as escolhas dos concorrentes.

Bolão Copa do Mundo 2026 | Felipe Micheletti