Multiplayer
PMR Truco.
Truco Paulista em tempo real com estado público, mãos privadas e uma mesa sincronizada por um servidor autoritativo.

- CONTEXTO
- Jogo web de Truco Paulista em tempo real para partidas individuais ou em dupla, com continuidade entre sessões.
- PARTICIPAÇÃO
- Concepção e desenvolvimento do produto
- ESTADO
- Demo pública
CONTEXTO & SOLUÇÃO
O ponto de partida.
O problema
Uma partida online precisa manter a mesa sincronizada sem revelar mãos privadas ou permitir que clientes decidam regras conflitantes.
A solução
Um Truco Paulista em tempo real com estado público, mãos privadas e processamento central das ações para partidas 1×1 e 2×2.
PRODUTO & ENGENHARIA
Escolhas que
fazem diferença.
Uma fonte de verdade
Toda ação relevante é processada por uma camada autoritativa, em vez de cada navegador decidir o resultado localmente.
O compromissoO round-trip adicional custa latência, mas evita regras divergentes entre participantes.
Estado público, mãos privadas
Placar, rodada e ações compartilhadas ficam no estado público; cartas permanecem acessíveis apenas a quem deve vê-las.
O compromissoA separação torna o modelo e as políticas mais complexos, em troca da integridade da mesa.
Regra separada da tela
O motor de regras em TypeScript puro pode ser exercitado sem interface e validado por testes unitários e E2E.
O compromissoModelar o domínio exige trabalho inicial, mas torna cada jogada mais fácil de provar e evoluir.
NA PRÁTICA
O que o produto faz.
- Partidas 1×1 e 2×2
- Sincronia com Supabase Realtime
- Separação entre estado público e mãos privadas
- Motor de regras em TypeScript puro
- Testes unitários e E2E
- PWA com retomada de partida
INTERFACE
O projeto na tela.


POR DENTRO
Cada tecnologia,
uma função.
- Next.js · TypeScript
- Entrega a aplicação web, a navegação e as interfaces da mesa com contratos tipados.
- Supabase · Realtime · RLS
- Sincroniza partidas e protege a separação entre dados públicos e privados.
- Three.js
- Compõe a mesa visual sem transferir a autoridade das regras para a camada gráfica.
- Vitest · Playwright
- Exercitam o motor isolado e os fluxos completos de uma partida no navegador.
LEITURA TÉCNICA
O que o projeto ensina.
Separar as regras da interface permite testar jogadas sem renderizar a mesa. O estado compartilhado e as cartas privadas precisam de contratos diferentes.
ESTADO DO PROJETO
Onde o projeto está.
A demonstração está disponível publicamente. O código-fonte do projeto permanece privado.
- Código-fonte privado
- Regras de partida processadas no servidor
- Estado público separado das mãos privadas