SaaS multi-tenant para condomínios
Recebe Avisa
Recebe, registra e avisa. Sozinho.
- Ano
- 2026
- Papel
- Produto · Backend · Frontend · Infraestrutura · Observabilidade
- Status
- MVP em desenvolvimento
Repositório privado — este case é o registro público do projeto. A demonstração pública está sendo preparada com ambiente isolado e dados fictícios.
O problema
Encomenda em condomínio ainda é resolvida com caderno, planilha ou grupo de WhatsApp. O porteiro anota à mão em horário de pico, o morador só descobre que chegou quando passa na portaria, e quando algo se perde não existe registro de quem recebeu nem de quem retirou. O atrito é diário e recai sobre a portaria.
A solução
O porteiro fotografa a etiqueta pelo próprio navegador do celular. A API lê o texto com OCR, encontra o morador por busca fuzzy no cadastro e dispara o aviso pelo canal preferido — WhatsApp, Telegram ou e-mail — com fallback automático se o primeiro falhar. A retirada fecha o ciclo e deixa o registro auditável.
Decisões técnicas
- 01
O OCR nunca bloqueia o registro
A rota de scan responde sucesso sempre. Se o OCR falhar, vier ilegível ou com baixa confiança, o fluxo cai em modo degradado: a etiqueta é registrada mesmo assim e o porteiro confirma o morador a partir de sugestões ou da busca manual. Portaria em horário de pico não pode parar por causa de uma etiqueta amassada — e essa é a diferença entre um sistema que é usado e um que é abandonado na primeira semana.
- 02
Busca fuzzy em vez de correspondência exata
O nome impresso na etiqueta quase nunca bate com o cadastro: vem abreviado, com o nome de quem comprou, sem acento ou com erro do remetente. A identificação usa pg_trgm com apelidos cadastrados por morador, devolvendo sugestões ranqueadas em vez de um acerto ou erro binário.
- 03
Multi-tenant por coluna, filtrado em toda query
Cada tabela carrega o identificador do condomínio e nenhuma query cruza tenants — é regra de arquitetura, não convenção. Um SaaS de condomínio que vaze dado entre clientes não tem segunda chance comercial.
- 04
Dado pessoal fora da telemetria, com portão automatizado
A telemetria é OpenTelemetry coletada por um agente que remove PII ainda dentro da VM, antes de qualquer coisa sair para fora. E há um verificador de PII rodando no CI que quebra o build se dado pessoal aparecer em span, métrica ou log. O portão não é teórico: um vazamento real, causado pela forma como o ORM interpola valores dentro do SQL, motivou a normalização das queries antes de virarem atributo de span.
- 05
Custo zero como requisito de arquitetura
O MVP inteiro roda em camada gratuita: VM ARM na Oracle Cloud, mil requisições de OCR por mês, WhatsApp Cloud API e observabilidade no plano free. Fila gerenciada e serviços pagos só entram a partir de cinquenta condomínios. Restrição de custo declarada desde o início evita a arquitetura que fica cara antes de ter cliente.
O que ficou pronto
- API com autenticação por papéis, cadastro de moradores com apelidos, fluxo completo de registro e retirada e painel do síndico
- 27 testes automatizados sobre a API (Jest + supertest)
- CI/CD completo: imagem ARM64 publicada no registry, deploy por rede privada sem abrir nenhuma porta nova, smoke test e rollback automático
- Observabilidade como código: dashboards versionados e 13 alertas, com notificação por Telegram
- Infraestrutura em Terraform na Oracle Cloud, com expurgo de objetos em 30 dias e alerta de orçamento
- Portaria funcional no ar em ambiente de teste
Stack
- React 18
- Vite
- Node.js 20
- Express
- Sequelize
- PostgreSQL 15 · pg_trgm
- Cloud Vision OCR
- WhatsApp Cloud API
- Terraform · OCI
Outros projetos
Falar sobre um projetoSuper Juice
A conta do bartender, resolvida em três toques.
App Android nativo em Kotlin e Jetpack Compose que calcula super juice cítrico: pese as cascas e o app devolve os gramas exatos de cada ácido e de água. Offline, sem permissões, em três idiomas.
- Kotlin
- Jetpack Compose
- Room
- DataStore
Veredito
O que vale seu tempo hoje.
Catálogo de streaming classificado por avaliação, construído em Next.js 14 com a chave da API protegida no servidor e cache compartilhado de 24 horas.
- Next.js 14
- App Router
- React 18
- TMDB API
Triarquia
Poupar, investir, enriquecer — nessa ordem.
Estudo de produto em finanças pessoais: um painel que só libera o pilar de investimento depois da dívida sob controle, com consultor de IA raciocinando sobre números calculados no backend. Existe como protótipo de uso pessoal.
- React
- Vite
- Tailwind CSS
- Flask