TYTO.club

Comunidade internacional de tecnologia que fundei em 2021, hoje uma plataforma com economia gamificada, governança simulada e projetos reais para squads

2021 - Presente
Capa do TYTO.club

Visão Geral

Fundei o TYTO.club em 2021, inicialmente como uma comunidade de estudos entre universitários de computação, e conduzi seu crescimento até a plataforma atual: um ecossistema onde membros acumulam XP, sobem de patente, ganham Dracmas (moeda interna) cumprindo missões, lideram ou participam de projetos reais e operam uma camada de governança simulada com Reinos, Polis, eleições e um tribunal monetário. Arquitetei e desenvolvi a plataforma do zero: frontend em React 19 + TypeScript + Vite, Firebase (Auth + Firestore) como base de dados primária para leituras em tempo real, e um backend REST dedicado para as regras de negócio mais sensíveis, como economia e missões.

O que a plataforma faz

Progressão

XP e 14 patentes (de Neófito a Dominador), cada uma com perks reais de acesso a projetos e benefícios. Conquistas concedidas por transação atômica.

Economia (Dracmas)

Moeda interna com histórico completo de transações, taxa mensal automática, empréstimos e reserva lastreada em dinheiro real.

Governança

Reinos e Polis com cargos eletivos (Tribuno, Conselheiro, Dux Vecturium, Guarda Pretoriana), mandatos com prazo e impeachment por voto.

Projetos & Squads

Papéis de líder/parceiro/colaborador por projeto, métricas reais de negócio (MRR, burn rate, churn) resumidas em um índice único de progresso.

O Desafio

  • Conceder conquistas sem duplicar ou perder registros quando duas rotinas do app disparavam a mesma verificação quase ao mesmo tempo, para membros diferentes competindo pelas mesmas metas.
  • Proteger campos financeiros e de hierarquia (saldo, patente, cargos eletivos) sem depender só da interface: em um sistema onde XP e Dracmas valem "moeda real" dentro da comunidade, qualquer brecha de escrita direta vira uma forma de trapaça.
  • Modelar em código uma estrutura de governança inteira (Reino, Polis, Colônias/Metrópoles, cargos eletivos com mandato e impeachment, tribunal monetário), mantendo tudo fiel a regulamentos escritos em prosa que evoluem junto com a comunidade.

A Solução

  • Concessão de conquistas dentro de uma transação atômica do Firestore em vez de escritas simples: a transação sempre lê o estado já confirmado (não o que está em memória) e, de quebra, repara sozinha registros duplicados deixados por corridas passadas.
  • Regras do Firestore com mais de 950 linhas como autoridade real de acesso, não só a UI: funções dedicadas bloqueiam qualquer escrita direta do usuário a saldo, patente ou cargo, e a suspensão automática por saldo negativo é reforçada tanto no client quanto no servidor.
  • Os regulamentos internos (a "Carta Institucional", em Markdown) são a fonte da verdade do domínio, e o código é a implementação deles: cargos eletivos, mandatos e o tribunal monetário viram tipos e serviços dedicados, revisáveis independentemente do texto institucional.

Arquitetura do Sistema

O frontend fala com dois backends distintos por design: a maior parte das leituras (e algumas escritas) vai direto do navegador para o Firestore em tempo real, enquanto a economia, projetos e missões (a lógica de negócio mais sensível) passam por um backend REST dedicado, autenticado com o token do Firebase.

[Frontend] React 19 + Vite + TypeScript: Firebase Auth, estado do usuário assinado em tempo real (onSnapshot)
↓ dois caminhos de dados
[Firestore direto] Leituras e escritas simples via SDK client, tempo real
[Backend REST] Economia, projetos, missões: fetch + Bearer <ID token>
↓ controle de acesso
[firestore.rules] 950+ linhas: autoridade real de acesso, não a interface

Segurança como Camada Real, não de Conveniência

Mais de 45 coleções têm regras dedicadas no Firestore, cada uma derivando leitura/escrita de uma combinação de autenticação, membership de Polis/Reino/projeto, cargo eletivo ativo ou admin global:

  • Campos sensíveis (saldo, patente, cargos) nunca são editáveis pelo próprio usuário via escrita direta, apenas por transações server-side/admin.
  • Permissão de projetos é derivada diretamente do papel do membro (líder, parceiro, colaborador), validada nas regras, não apenas escondida na UI.