Produtos
Palpitaê 26
PWA mobile-first de palpites entre amigos para a Copa de 2026, com grupos privados, ranking determinístico, Pix e trilha de auditoria — desenhada para não ser um produto de aposta.
- Status
- Open source · arquivado
- Atuação
- Produto, arquitetura, backend Go, frontend React, operação e documentação do case study.
- Stack principal
- Go, React, TypeScript, PostgreSQL

Visão geral
Produto full-stack solo que substituiu bolões em planilha por um app web com grupos, palpites, ranking automático, pagamentos Pix e painel administrativo.
Grupos de amigos e colegas que queriam palpitar a Copa juntos, sem prêmios, apostas ou sorteios.
Entrega uma vitrine de engenharia open source: domínio Go modular, SQL explícito, idempotência financeira e compliance tratado como regra de produto.
Problema e resposta
As decisões técnicas partiram do contexto operacional do produto.
O problema
Era preciso um app mobile-first de palpites com grupos privados, ranking confiável e acesso pago, sem cruzar a linha de produto de aposta.
A solução
Construí uma PWA React com API e worker em Go, PostgreSQL SQL-first, adapters para Pix e calendário, sessões no servidor e políticas determinísticas de pontuação e indicação.
O contexto
Toda Copa alguém organiza o bolão no chat e gasta o torneio copiando placares para planilha, com discussões sobre palpites atrasados e ranking recalculado na mão.
O Brasil regula apostas e promoções com prêmio. O produto precisava ser inequivocamente um jogo social — e essa restrição tinha que viver no modelo de dados, no vocabulário e na revisão de código.
Arquitetura
Responsabilidades explícitas, contratos claros e tecnologia escolhida pelo papel que cumpre.
Backend e domínio
API HTTP com pacotes de domínio (identity, payments, groups, predictions, scoring, referrals, admin, audit) e regras explícitas de dependência.
SQL explícito sem ORM, migrations versionadas e acessos tipados — priorizando auditabilidade financeira sobre conveniência.
Binário separado para jobs agendados: sincronização de calendário, liberação de comissões e recálculo pós-partida.
Frontend e entrega
PWA mobile-first com Router, Query e Zod; fundação de rotas e contratos introduzida antes do checkout.
Cookies HttpOnly com sessões no PostgreSQL e Argon2id — reembolso e bloqueio com efeito imediato.
Deploy em VPS única com HTTPS, estáticos e API atrás do Caddy; ambiente local offline com gateway Pix falso.
Integrações e qualidade
Pix, calendário de jogos, e-mail e auditoria atrás de interfaces; o domínio nunca importa SDK de fornecedor.
go test, Vitest, Testing Library e Playwright; CI com lint, testes, build e E2E em cada pull request.
Decisões de produto
Jogo social, não aposta
Ranking sem prêmio, plano pago compra acesso ao software, vocabulário controlado e checklist de compliance em toda mudança.
Idempotência como preocupação de primeira classe
Webhooks persistidos e reprocessáveis; pagamento confirmado dispara efeitos que não podem duplicar em reentrega.
Allowlist no provedor de jogos
O adapter importa só partidas, status, placares e times — excluindo odds e dados de bookmaker na fronteira de integração.
Entrega
As capacidades que chegaram à superfície do produto.
Contas e acesso
Auth e-mail/senha, aceite versionado de termos, rate limit e planos Free (1 grupo) ou Passe Mundial (Pix único).
Visão semanal e partidas
Painel que responde “tenho algo para palpitar agora?”, lista de jogos e detalhe com countdown e palpites do grupo.
Admin e auditoria
Painel operacional para pagamentos, resultados, comissões e saques, com trilha de auditoria em ações críticas.
Documentação open source
Case study, ADRs, glossário de domínio, CONTRIBUTING e LICENSE MIT para leitura e reuso do código.
Interface em uso



