Toca aê · set 2025 a mar 2026 · manutenção ativa
Toca aê
SaaS de pedidos de música e bonificações via Pix para bares, restaurantes e eventos, construído do zero à produção.
5 meses
do primeiro commit à produção, sozinho
2.792
testes automatizados no back-end
123 mil
linhas entre front-end e back-end
Resumo do que fiz
- Sistema inteiro projetado e construído por mim, do primeiro commit à produção com clientes reais em cinco meses.
- 938 commits, 123 mil linhas, 14 módulos documentados e 167 componentes de interface reaproveitáveis.
- 2.792 testes automatizados no back-end, cobrindo 92,9% dos módulos.
- Infraestrutura como código em 8 módulos e 22 grupos de rotas de API catalogados automaticamente.
- 4 painéis integrados: cliente, artista, estabelecimento e administração, com bonificações via Pix.
Tecnologias
A virada
O que mudou no projeto
A equipe anterior levou dois meses sem entregar uma linha de código, sem nenhuma arquitetura definida e se recusando a repassar o que existia. Entrei, projetei e construí o sistema inteiro do zero, sozinho, em cinco meses, com testes, documentação e infraestrutura como código desde o primeiro commit. Hoje a Toca Aê está em produção, com clientes reais. Os números abaixo foram apurados nos próprios repositórios do projeto.
2 meses
Sem uma linha de código entregue pela equipe anterior.
5 meses
Do primeiro commit à Toca Aê em produção, com clientes reais.
2.792
Testes automatizados no back-end, parte do fluxo desde o início.
22
Grupos de rotas de API, documentados e catalogados automaticamente.
Arquitetura
A infraestrutura antes e depois
Cada linha da coluna da esquerda é o estado que encontrei. À direita, o que ficou no lugar.
Antes
Depois
Problema e solução
Ponto a ponto, o que estava errado e o que fiz
Cada par mostra o problema encontrado e a correção aplicada.
O que encontrei
Dois meses sem entregar uma linha de código
A equipe anterior passou os dois primeiros meses de projeto sem entregar nenhum código funcional, sem sinal de progresso nenhum.
O que fiz
Sistema inteiro entregue do zero
Projetado e construído do início ao fim por mim, hoje em produção com clientes reais.
O que encontrei
Nenhuma arquitetura nem plano técnico
Não existia desenho de arquitetura, nem escolha de stack justificada. O sistema não tinha lógica nem estrutura definida.
O que fiz
Arquitetura em camadas, com baixo acoplamento
Views chamam services, services chamam models — cada camada com uma responsabilidade só, sem regra de negócio misturada na view.
O que encontrei
Nenhuma regra de negócio definida
Nem as regras básicas de como o produto deveria funcionar estavam escritas em algum lugar.
O que fiz
Regras de negócio centralizadas em serviços testáveis
Cada regra vive num serviço próprio, isolado, que dá pra testar sem precisar subir o sistema inteiro.
O que encontrei
Equipe se recusava a entregar o código-fonte
Mesmo sem entregar o produto, a equipe anterior não repassava o código que já existia pro cliente.
O que fiz
Código sob controle de versão desde o primeiro commit
Todo o histórico do projeto, do início ao dia de hoje, versionado e disponível.
O que encontrei
Validação só no front-end
A equipe considerava suficiente validar os dados no front-end, sem nenhuma checagem correspondente no back-end.
O que fiz
Validação obrigatória no back-end
O back-end valida tudo de novo, sempre. O front-end é só uma camada de experiência a mais, nunca a única linha de defesa.
O que encontrei
Testes tratados como opcionais, só no final
Testar era visto como uma etapa de fim de projeto, não parte do trabalho do dia a dia.
O que fiz
2.792 testes automatizados
Parte do fluxo de trabalho desde o primeiro dia, cobrindo 13 dos 14 módulos do back-end.
O que encontrei
Sem TypeScript no back-end
O tipo estático ficava só no front-end. O back-end, que é onde o dado de verdade é validado, rodava sem essa proteção.
O que fiz
TypeScript em modo estrito nos dois lados
Front-end e back-end tipados e verificados, sem `any` solto e sem `@ts-ignore` sem justificativa.
O que encontrei
Nenhum plano pra pagamento ou tempo real
Não havia desenho nenhum de como o pagamento ou as notificações em tempo real do evento aconteceriam.
O que fiz
Pagamento PIX com split automático
Webhook idempotente, com uma reconciliação automática por trás — a confirmação do pagamento não depende só do webhook chegar.
Entrega
Os números apurados no repositório
Nenhum número aqui é estimativa: todos saíram do próprio repositório do projeto.
938
Commits no projeto inteiro, 100% de uma única pessoa.
2.792
Testes automatizados no back-end.
123 mil
Linhas de código, somando front-end e back-end.
14
Módulos do sistema, cada um com documentação própria.
167
Componentes de interface reaproveitáveis no front-end.
8
Módulos de infraestrutura, provisionados como código.
Linhas de código entregues
linhas
Zero linhas em dois meses, contra um sistema inteiro em produção.
Testes automatizados
testes
Testar deixou de ser uma etapa final pra virar parte do fluxo desde o início.
Módulos documentados
módulos
Cada um com a própria documentação, em português e inglês.
Módulos com suíte de testes própria
Módulos testados
13 dos 14 módulos do back-end têm a própria suíte de testes.
Frentes de trabalho
Tudo que foi feito, por área
A entrega dividida nas frentes que ela realmente teve.
Segurança e validação
Da validação no back-end aos segredos gerenciados, o que protege a Toca Aê desde o primeiro dia.
Validação sempre no back-end
O front-end cuida da experiência, mas quem decide o que é válido é sempre o servidor.
Autenticação com MFA
Login por token, com autenticação em duas etapas disponível pra quem opera o sistema.
Token fora do navegador
O token de acesso fica num cookie httpOnly, injetado por uma camada intermediária. O JavaScript da página nunca o enxerga.
Limite de requisições por rota
Rotas sensíveis, como pagamento e chat da live, têm limite próprio de chamadas por minuto.
Segredos gerenciados, nunca no código
Chaves e senhas ficam num cofre de segredos na nuvem, com rotação programada e acesso registrado.
Auditoria com dado sensível mascarado
Toda ação relevante fica registrada, com CPF, CNPJ e dado de pagamento sempre mascarados no log.
Verificação automática antes de cada commit
Tipagem, formatação e um verificador de migração arriscada rodam antes de qualquer código entrar no projeto.
Pagamento e tempo real
Como o dinheiro e as notificações chegam sem se perder.
Pagamento PIX com split automático
A divisão do valor entre as partes acontece automaticamente, sem passo manual.
Webhook de pagamento idempotente
Receber a mesma confirmação duas vezes não gera cobrança nem crédito duplicado.
Reconciliação automática por trás
Se a confirmação do pagamento não chegar pelo webhook, uma rotina própria confere e corrige sozinha.
Notificação em tempo real
Pedido de música e status da fila chegam na hora, via WebSocket, sem precisar atualizar a página.
Canal próprio por usuário
Cada pessoa tem um canal persistente, que continua recebendo notificação mesmo depois de trocar de tela.
Tarefas assíncronas e agendadas
Trabalho pesado roda em segundo plano, sem travar a resposta de quem está usando o sistema.
Arquitetura e engenharia
Como o sistema foi pensado pra crescer sem virar um emaranhado.
Views, services e models, cada um no seu papel
Regra de negócio nunca fica misturada na camada que recebe a requisição.
Tratamento de erro centralizado
Um único ponto decide como cada tipo de erro vira resposta, em vez de cada rota inventar o próprio formato.
Resposta da API sempre no mesmo formato
Toda rota devolve sucesso ou erro do mesmo jeito, previsível pra quem consome.
Documentação da API gerada automaticamente
O catálogo de rotas é gerado direto do código, então nunca fica desatualizado.
Banco com identificador não sequencial
Registros centrais usam um identificador que não dá pra adivinhar contando de um em um.
Verificação de tipos em modo estrito
Ligada em todo o projeto, front-end e back-end, não só nas partes novas.
Front-end e experiência
A camada que quem usa a Toca Aê realmente vê e toca.
Aplicação com renderização no servidor
Carregamento mais rápido e melhor indexação, sem depender só do processamento no navegador.
Camada intermediária protege o token
O front-end nunca guarda o token de acesso; uma camada própria repassa a chamada com o token embutido.
Um único jeito de guardar dado do servidor
Sem estado espalhado em ferramentas diferentes: uma biblioteca só cuida de buscar e guardar dado da API.
Navegação por teclado nos campos principais
Busca de música e formulários respondem ao teclado, não só ao mouse.
Imagem sempre otimizada
Nenhuma imagem solta sem otimização, pra tela não pular enquanto carrega.
Erro em produção com contexto sensível removido
O rastreamento de erro apaga senha, token e dado pessoal antes de qualquer registro sair do sistema.
Infraestrutura e operação
O que roda por trás pra manter tudo no ar.
Infraestrutura como código
Toda a nuvem provisionada por código versionado, não clicada manualmente num painel.
Proteção de borda como código
Firewall, certificado e proteção contra ataque também vivem em código, não em configuração manual.
Metas formais de disponibilidade
Tempo de resposta e disponibilidade têm um número alvo documentado, não uma expectativa solta.
Painel de observação e teste de carga
Painéis de acompanhamento e testes de carga guardados no próprio repositório, prontos pra rodar.
Documentação bilíngue por módulo
Cada um dos 14 módulos do sistema documentado em português e inglês.
Integração contínua com banco de verdade
Os testes automatizados rodam contra um banco de dados real a cada mudança, não um simulado.
Confiabilidade
Como a operação passou a se comportar
Resultado
O que a virada entregou na prática
Sistema em produção
Com clientes reais usando a plataforma hoje.
22 grupos de rotas de API
Documentados e catalogados automaticamente, prontos pra crescer.
2.792 testes automatizados
Parte do fluxo de trabalho desde o início, não uma etapa final.
Pagamento PIX com split automático
Webhook idempotente, com reconciliação por trás.
Tempo real via WebSocket
Notificações instantâneas, sobre Redis e Django Channels.
Infraestrutura como código
Terraform, com caminho de escala já documentado.
Validação sempre no back-end
O front-end é só uma camada de experiência a mais.
14 módulos, todos documentados
Cada um em português e inglês.
Metas formais de disponibilidade
Documentadas, com política de erro definida.
Segredos gerenciados, nunca no código
Rotação programada, acesso registrado.
Próximo projeto
Plannus CRM