Ir ao conteúdo principal
2026

Multi-tenant scheduling platform

Next.js
Drizzle ORM
PostgreSQL
Docker
Vitest
Playwright
TypeScript

Descrição

SaaS de agendamento que construí sozinho, com cerca de 27 mil linhas. A cliente marca por um widget embutido no site do próprio negócio, a dona administra tudo por um painel, e os dados de cada tenant ficam isolados por Row Level Security.

Funcionalidades

  • Row Level Security forçado em toda tabela de tenant, inclusive para o dono da tabela
  • Widget de agendamento que se embute em sites de terceiros
  • Painel da dona com semana, pedidos pendentes, bloqueios e serviços
  • Roda em VPS com Docker Compose, proxy reverso e rotina de backup diário
  • 299 testes sobre regra de negócio e política de acesso, em Vitest e Playwright

Desafios

  • Impedir overbooking de vez, o que virou uma constraint de exclusão no Postgres em vez de uma verificação no código
  • Manter o cálculo de disponibilidade num lugar só, compartilhado pelo widget, pelo painel e pela API
  • Tirar tudo de uma plataforma gerenciada sem reescrever as regras de negócio

Aprendizados

  • Que um invariante que o banco consegue garantir não deveria morar no código da aplicação
  • O quanto vale um arquivo de migration versionado no dia em que você troca de plataforma
  • Testar o que quebra caro, regra de negócio e política de acesso, em vez de perseguir cobertura