Site + Sistema
Xadrez Educalar — Plataforma Educacional de Xadrez
Do primeiro lance ao torneio: xadrez com relógio confiável, aprendizado de verdade e comunidade ativa — tudo em um só lugar.
O Xadrez Educalar não é um template comprado, não é um plugin WordPress, não é um fork de um projeto existente. Cada linha de código foi escrita do zero — do tabuleiro ao banco de dados, das regras do xadrez ao painel administrativo.
O motor de xadrez
Começou pelo tabuleiro. Em vez de usar uma biblioteca pronta de xadrez (como chess.js), o motor de regras foi implementado do zero: representação do tabuleiro como matriz 8x8, cálculo de movimentos legais peça por peça, validação de xeque, xeque-mate, afogamento, roque (com verificação de casas ameaçadas), en passant, promoção de peão, empate por repetição tripla e material insuficiente. Cada regra foi codificada manualmente e testada em cenários reais de partida.
Para a IA, integrou-se a engine Stockfish compilada em WebAssembly — não como um serviço terceirizado, mas rodando localmente no navegador do usuário, em um Web Worker dedicado, sem dependência de servidor para calcular lances. A mesma engine alimenta a análise de partidas, que classifica cada jogada (excelente, boa, imprecisa, erro) e desenha o gráfico de avaliação.
O relógio (a parte mais difícil)
O relógio de xadrez foi o desafio técnico mais complexo do projeto. A primeira versão calculava o tempo no navegador — como a maioria dos sites de xadrez amadores faz. Mas os problemas apareceram: em celulares com a aba em segundo plano o timer congelava e voltava errado; em computadores com relógio desajustado o tempo "acabava" antes da hora; dois jogadores viam tempos diferentes na mesma partida; o modal de "tempo esgotado" aparecia com os relógios ainda mostrando tempo sobrando.
A solução levou várias iterações até chegar na arquitetura definitiva: o backend se tornou a única fonte de verdade. Cada jogada passa por uma função transacional no banco de dados (commit_room_move) que, numa operação atômica, trava a linha da sala com um contador de versão, desconta o tempo do jogador da vez usando o relógio do servidor (statement_timestamp()), aplica o incremento, troca o turno, grava o tabuleiro e atualiza a âncora do relógio. Jogadas com versão antiga são recusadas. O timeout é confirmado por outra função transacional (confirm_room_timeout), nunca decidido pelo cliente. Uma tarefa cron percorre todas as salas ativas a cada minuto para garantir que nenhum timeout passe em branco. O navegador passou a ser apenas uma projeção somente de leitura do estado oficial.
O multiplayer em tempo real
As salas privadas foram construídas com sincronização via WebSockets (Supabase Realtime). O registro de jogadas é versionado — cada atualização carrega um número de versão que o servidor valida, impedindo que jogadas concorrentes se sobrescrevam. Um contador de sequência (game_seq) permite múltiplas partidas na mesma sala (revanche) sem duplicação no histórico. O bot (IA) também joga usando a mesma rotina transacional, respeitando a trava de versão.
O LMS (aprendizado)
A trilha de aprendizado interativa foi modelada do zero: módulos de tática (garfos, pregadores, ataques duplos, desvios), estratégia (controle do centro, invasão da 7ª fileira), puzzles em quatro modalidades (diário, treino livre, modo cronometrado e por temas) com sistema de rating próprio, biblioteca de aberturas com diagramas jogáveis, e cursos com vídeo (embed do YouTube), anotações pessoais, comentários aninhados e certificado de conclusão em PDF gerado por uma Edge Function. Cada lição foi revisada para garantir que a posição inicial fosse legal e que a sequência de lances fizesse sentido.
A comunidade
O feed social foi construído do zero: posts com texto, fotos e vídeos, enquetes com votação, menções a usuários, curtidas, fixação de postagens pelo admin, compartilhamento (WhatsApp, X, Facebook, copiar link). Um diretório de jogadores online, ranking global com badges de tier, 39 artigos educacionais originais com busca em texto completo e sistema de comentários, e sorteios com meta de participantes, foto do prémio e link de afiliado para indicação de amigos.
Os torneios
O sistema de torneios foi construído do zero com três formatos: suíço (emparelhamento automático por pontuação), todos-contra-todos (round-robin) e eliminatória. Geração automática de rodadas, criação automática de salas para cada partida, inscrição com ou sem taxa (integração de pagamento via Asaas), W.O. automático por tempo, notificações para organizadores e participantes, e certificados de participação.
A infraestrutura
O backend não é um servidor genérico: são ~50 tabelas organizadas por domínio (jogo, aprendizado, comunidade, torneios, sorteios, e-mails, administração), cada uma com Row Level Security ativada e políticas específicas por papel (admin, responsável, usuário). O sistema de papéis vive em tabela separada (nunca no perfil), acessível via função has_role() security definer. O sistema de e-mails tem fila (pgmq), tratamento de bounce, descadastro em um clique, templates com a identidade visual da marca, e notificações transacionais (boas-vindas, resumo semanal, dicas, alertas de torneio). Tarefas cron expiram salas ociosas, varrem timeouts, enviam notificações de aniversário e processam a fila de e-mails — tudo automático.
O painel administrativo
Um dashboard completo para gerenciar tudo: usuários (com troca de papel), cursos e aulas (com reordenação por drag-and-drop), certificados, artigos (com geração de imagem de capa por IA), banners, comentários, salas, sorteios, logos do site e status do sistema.
Os detalhes que importam
Login social com Google, recuperação de senha, página de onboarding, controle parental com limite de tempo de tela e métricas, gamificação com conquistas e badges, suporte a três idiomas (pt-BR, en, es), design responsivo do mobile ao desktop, e uma identidade visual própria (tons de azul e marrom, padrão de tabuleiro no rodapé). Nada disso veio pronto — tudo foi construído peça por peça.
O que o projeto resolve
Jogos de xadrez online sofrem com problemas crónicos e bem conhecidos:
- Relógio que diverge: cada jogador vê um tempo diferente — a aba suspensa, o dispositivo ou a conexão instável fazem o cronômetro dessincronizar. Partidas são encerradas injustamente com 'tempo esgotado' quando ainda havia tempo sobrando.
- Histórico não confiável: partidas aparecem duplicadas ou somem do histórico, especialmente em revanches dentro da mesma sala.
- Torneios manuais: organizar um torneio exige planilhas, emparcelhamento manual, controle de presença e apuração de resultados — trabalho pesado e propenso a erro.
- Falta de caminho completo: plataformas educacionais oferecem só jogo, ou só conteúdo, ou só comunidade — raramente tudo integrado, e quase nunca em português, num ambiente seguro para crianças e escolas.
O que mudou no negócio
- Confiabilidade: partidas online sem divergência de tempo nem registros perdidos.
- Educação estruturada: com trilha, treinamento, cursos certificados e análise de partidas.
- Engajamento: comunidade ativa com feed social, ranking, torneios e sorteios.
- Segurança: ambiente com controles parentais, adequado a escolas e famílias.
- Automação: torneios, e-mails e expiração de salas geriados automaticamente.
- Escalabilidade: arquitetura pronta para crescer em volume de usuários.
- Internacionalização: três idiomas suportados desde o início.
- Receita: torneios pagos e captação via sorteios.
Como a gente resolveu
No site
O site institucional/educacional inclui:
- Landing page com apresentação da plataforma, modos de jogo e chamada para ação.
- 39 artigos educacionais originais (história do xadrez, biografias de mestres, benefícios cognitivos, xadrez na educação, TDaH, vestibular, carreira, bullying, liderança etc.) com busca em texto completo e sistema de comentários.
- Biblioteca de aberturas com diagramas interativos e explicações detalhadas.
- Páginas de torneios com lista pública, detalhes, inscrições e acompanhamento de rodadas.
- Ranking global e diretório de jogadores online.
- Página de sorteios com barra de progresso de meta, link de afiliado para indicação de amigos e descrição rica do prémio.
- Suporte a três idiomas (português, inglês e espanhol) com seletor de idioma.
- Design responsivo com identidade visual própria (tons de azul e marrom, padrão de tabuleiro no rodapé).
No sistema
O sistema/software inclui:
- Motor de xadrez próprio: regras completas implementadas do zero no frontend, com Stockfish em WASM para análise de partidas e jogadas da IA. Modos: local (duas pessoas), contra IA (níveis de dificuldade fixos e modo adaptativo), online em salas privadas e modo família (responsável e filho jogam juntos).
- Multiplayer em tempo real: salas privadas com sincronização via WebSockets, registro de jogadas versionado e histórico com contador de sequência que permite múltiplas partidas por sala sem duplicação.
- Relógio server-authoritative: cada jogada e cada estouro de tempo são decididos de forma atômica por uma função transacional no banco de dados, com trava de versão e o relógio do servidor como fonte única de verdade — o tempo nunca diverge entre os jogadores, independente de dispositivo, conexão ou aba em segundo plano.
- LMS completo: trilha interativa para iniciantes, treinamento de táticas e estratégia, biblioteca de aberturas, puzzles em quatro modos (diário, treino, modo cronometrado e por temas) e cursos com vídeo (YouTube), anotações pessoais, comentários e certificado de conclusão em PDF.
- Análise de partidas: relatório com a engine Stockfish, classificação de lances (excelente/bom/impreciso/erro) e gráfico de avaliação.
- Comunidade: feed social com posts, fotos, vídeos, enquetes, menções, curtidas, fixação de postagens e compartilhamento; perfil de jogador com estatísticas e conquistas.
- Torneios automatizados: formatos suíço, todos-contra-todos e eliminatória, com geração automática de rodadas e salas, inscrição com ou sem taxa (integração de pagamento via Asaas), W.O. automático e certificados.
- Sistema de sorteios: com meta de participantes, foto do prémio, validação por partidas jogadas pelo convidado e link de afiliado.
- Sistema de notificações: in-app (sino com badge) e por e-mail, com gatilhos para torneios, sorteios e eventos da comunidade.
- Sistema de e-mails: filas com tratamento de bounce, descadastro em um clique, templates com id
Quer um projeto assim pro seu negócio?
Converse com a gente sobre como colocar sua ideia no ar.
Falar no WhatsApp