22 de julho de 2026
Construir o HoqueiManager: de um clube só para uma plataforma SaaS multi-tenant
"Excel, WhatsApp e papel." É assim que a maioria dos clubes de hóquei em patins gere atletas, mensalidades e viagens. O HoqueiManager nasceu para resolver isso — mas não começou como produto.
O problema
Comecei por construir um sistema de gestão à medida para o Hóquei Clube PDL, um clube real com problemas reais: atletas espalhados por folhas de cálculo, mensalidades cobradas de cabeça, materiais que desapareciam sem rasto. Depois de o sistema estar em produção percebi o óbvio — todos os outros clubes têm exatamente o mesmo problema. Havia um produto ali dentro.
A arquitetura
Transformar uma ferramenta de um clube num SaaS multi-tenant obrigou a repensar a base toda. Cada clube é um tenant isolado, garantido a três níveis: o clubId vive no JWT; uma extensão do Prisma injeta automaticamente WHERE clubId = ? em todas as queries de modelos com dados de clube; e existe uma suite de testes dedicada só a confirmar que os dados de um clube nunca são visíveis a outro. Nada disto é opcional — é a fundação que torna o resto do produto possível.
Os módulos
Doze módulos cobrem a operação completa de um clube: atletas, mensalidades, sócios e quotas, materiais e têxteis (com estados de stock, atribuição e perda), patrocinadores, viagens com orçamento e checklist, direção e salários, épocas desportivas. O destaque é o quadro tático interativo — atletas arrastáveis, frames encadeados e playback, para os treinadores desenharem jogadas diretamente no browser. Para o clube como negócio, há relatórios exportáveis em XLSX e, para mim como plataforma, um dashboard de super admin com MRR/ARR real por país e estado de subscrição.
Segurança e billing
Passwords em PBKDF2 (nunca bcrypt), rate limiting atómico via Postgres — importante em serverless, onde não há memória partilhada entre instâncias — e um fluxo de onboarding pensado para nunca expor credenciais em metadata do Stripe ou em emails simples. O pagamento corre em Stripe: checkout de dois passos, confirmação direta na página de sucesso (sem depender só do webhook chegar) e o webhook como rede de segurança idempotente por trás. Tudo isto disponível em 5 idiomas — PT, ES, EN, FR, IT — porque o mercado endereçável (~350 clubes entre Portugal, Espanha, Itália e França) só faz sentido capturar assim.
O que aprendi
Multi-tenant desde o dia zero dói mais no início — cada query, cada teste, cada decisão de schema tem de respeitar o isolamento — mas evita uma migração dolorosa mais tarde. E o maior aprendizado não foi técnico: o melhor produto que construí não nasceu de uma ideia de mercado, nasceu de resolver bem o problema de um cliente real primeiro.