ÓticaPlus – SaaS Multi-Tenant para Óticas

SaaS multi-tenant para óticas com vitrine pública, propostas, pedidos/OS, financeiro, WhatsApp Agent e QR/OCR em um fluxo unificado.

Visão geral

Sistema SaaS multi-tenant para a operação completa de óticas, conectando vitrine pública, leads, atendimento, propostas compartilháveis, pedidos/OS, financeiro, laboratórios e relatórios no mesmo produto. O projeto foi evoluído para reduzir retrabalho, melhorar rastreabilidade comercial, organizar cobrança recorrente e dar mais controle ao fluxo operacional.

Desafio

  • Atendimento, financeiro, laboratório, prospecção e presença digital operavam de forma fragmentada.
  • Isso gerava retrabalho em cadastro, baixa rastreabilidade entre orçamento e pedido, pouca previsibilidade financeira e dificuldade para transformar leads em vendas acompanháveis.

Solução

  • Desenvolvi uma arquitetura SaaS multi-tenant em Next.js App Router, TypeScript, Drizzle ORM e Supabase, com módulos integrados para CRM, propostas, pedidos, financeiro, laboratórios, vitrine pública e prospecção.
  • Implementei governança por tenant, billing por plano, WhatsApp Agent, QR/OCR rastreável, propostas públicas com ciclo de aprovação e conversão segura para pedido/OS.
  • Também refinei contratos de API, validação, cache, observabilidade, hardening de uploads e componentes recolhíveis para reduzir poluição visual em fluxos densos.

Arquitetura

  • Monólito modular
  • Governança multi-tenant por loja e laboratório
  • Autenticação e autorização por contexto
  • Domínio de propostas separado do pedido operacional
  • Integração de QR/OCR, WhatsApp Agent e vitrine pública
  • Observabilidade e hardening incremental de APIs

Decisões técnicas

  • Separei proposta comercial de pedido operacional para evitar financeiro duplicado durante negociação.
  • Usei Drizzle ORM e repositories/services incrementais para reduzir acoplamento entre App Router, banco e regras de negócio.
  • Mantive WhatsApp como adaptador de canal, preservando fallback manual quando o Agent ou provedor automático não está disponível.
  • Apliquei hardening multi-tenant, validação de IDs, rate limit em uploads e observabilidade nas rotas críticas sem reescrever o sistema.

Destaques de Engenharia

  • 810 arquivos TypeScript
  • 197 route handlers de API
  • 53 tabelas/modelos Drizzle
  • Vitrine pública com leads e eventos
  • Proposta -> Pedido/OS -> Financeiro integrado

Impacto

  • Fluxo comercial, operacional e financeiro centralizado
  • Rastreabilidade entre lead, proposta, OS, pagamento e laboratório
  • Redução de entrada manual com QR/OCR e mensagens prontas
  • Billing, planos, cupons e limites de filiais estruturados

Resultado

  • Antes: comercial, financeiro e laboratório trabalhavam em paralelo -> Depois: a operação passou a seguir proposta -> pedido/OS -> financeiro -> laboratório.
  • Antes: leads e presença digital ficavam fora do sistema -> Depois: a vitrine pública passou a registrar leads, eventos e contato por WhatsApp.
  • Antes: cadastro manual gerava muito retrabalho -> Depois: QR/OCR e contexto de captura reduziram entrada manual em documentos críticos.
  • Antes: a cobrança era menos previsível -> Depois: billing por plano, carnês, recebíveis e despesas de laboratório deram mais controle operacional.
  • Antes: permissões e IDs eram pontos sensíveis -> Depois: validações por tenant e hardening de APIs reforçaram a governança de acesso.

Tecnologias

  • Next.js 16
  • React 19
  • TypeScript
  • Drizzle ORM
  • PostgreSQL
  • NextAuth
  • Zustand
  • Supabase
  • WhatsApp Agent