Pular para o conteúdo
Voltar aos projetos

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

SaaSTempo realPixAPIs de pagamento
Toca aê · fluxo do pedido
01Cliente pede a música
02Fila em tempo real
03Bonificação via Pix
04Métricas do evento
Painel ClientePainel ArtistaPainel EstabelecimentoPainel Admin

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

Dois meses sem nenhuma linha de código
Sistema inteiro entregue do zero, em produção
Nenhuma arquitetura ou plano técnico definido
Arquitetura em camadas, com baixo acoplamento
Validação só no front-end, sem checagem no back-end
Validação obrigatória no back-end
Testes tratados como algo opcional, só no fim
2.792 testes, parte do fluxo desde o início
Sem TypeScript no back-end
TypeScript em modo estrito nos dois lados
Nenhum plano pra tempo real ou notificação
Notificação em tempo real via WebSocket e Redis
Nenhuma infraestrutura provisionada como código
Infraestrutura como código, em Terraform
Equipe se recusava a entregar o código-fonte
Código sob controle de versão desde o primeiro commit

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

Equipe anterior0
Depois123.000

Zero linhas em dois meses, contra um sistema inteiro em produção.

Testes automatizados

testes

Equipe anterior0
Depois2.792

Testar deixou de ser uma etapa final pra virar parte do fluxo desde o início.

Módulos documentados

módulos

Equipe anterior0
Depois14

Cada um com a própria documentação, em português e inglês.

Módulos com suíte de testes própria

92,9%

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

Confirmação de pagamento perdida
AntesRisco real
DepoisReconciliação automática
Dado inválido aceito pelo servidor
AntesRisco real
DepoisBloqueado no back-end
Notificação em tempo real
AntesNão existia
DepoisWebSocket com Redis
Infraestrutura provisionada na mão
AntesSem plano
DepoisTerraform, como código
Erro em produção sem alerta
AntesSem monitoramento
DepoisRastreamento de erro
Trabalho pesado travando a resposta
AntesSem plano
DepoisTarefas assíncronas

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

Ver estudo de caso