AuthSales, uma base para vários sistemas
Meu projeto pessoal: uma plataforma comercial SaaS que também serve de fundação para sistemas de outros domínios, como comercial, hospitalar e ERP.
- TypeScript
- Fastify
- React
- PostgreSQL
- Redis
- TypeORM
Comercial· freelance
- Clientes
- Produtos
- Orçamentos
Hospitalar· estudo
- Clínico
- Fluxos de status
ERP
- Vendas
- Compras
- Estoque
- Fiscal
Base AuthSalespacotes de backend, frontend e tipos
- Autenticação
- Permissões e escopo
- Auditoria e outbox
- CRUD e telas
- Temas e i18n
- PDF e e-mail
O problema
Construir sozinho uma plataforma multiempresa que servisse de base para outros sistemas, sem cair em nenhuma destas três armadilhas.
Escrita pela metade
Um pedido sem auditoria, que nenhum outro sistema ficou sabendo.
Dado de outra conta
Um usuário da Conta A vendo um pedido da Conta B.
Código copiado
A correção feita em um sistema não chega nas cópias.
Como funciona
Escopo negado por padrão
Um registro de outra conta responde igual a um que não existe.
Tudo ou nada
Escrita, auditoria, recibo de idempotência e eventos vão na mesma transação.
Base em pacotes
Backend, frontend e tipos publicados. Cada sistema só escreve o próprio domínio.
Quatro tipos de tempo
Declarados no esquema, porque vencimento não é instante.
Pronto só com evidência
API, permissão, persistência e navegador, com evidência executável.
Extensões e agentes
SDK declarativo e versionado, e agentes de IA locais cujo diff o sistema valida.
Resultado
Mais de cem serviços migraram sem mudar nenhuma assinatura pública, e cada sistema novo já nasce com autenticação, permissões, auditoria e temas.
- Outbox transacional no PostgreSQL: escrita, auditoria e eventos na mesma transação
- Vencimento não é instante: quatro tipos de tempo no PostgreSQL e no TypeScript