Full-stack26 de setembro de 2024
Next SaaS RBAC
Arquitetura full-stack multi-tenant de identidade, organização & permissões
Visão geral de engenharia & posicionamento
Uma aplicação full-stack multi-tenant em que autenticação, organizações, vínculos de membros, abilities associadas aos papéis, ownership de recursos, convites, projetos, faturamento e transferência de ownership são coordenados em uma arquitetura compartilhada de web e API.
Arquitetura do fluxo de dados & estados
Aplicação web Next.js
Server Actions & contexto da UI
API Fastify
Endpoints OpenAPI & guards de autenticação
Pacote CASL compartilhado
Definições unificadas de abilities
Banco Prisma multi-tenant
Organizações, papéis & ownership
Sequência de execução:Requisição do client ➔ Avaliação compartilhada de abilities CASL ➔ Verificação de vínculo no tenant ➔ Query Prisma escopada por tenant
Foco de engenharia & temas centrais
- Autenticação, tenancy e autorização são contextos distintos e não intercambiáveis
- Papéis pertencem a vínculos dentro de organizações, não globalmente a um usuário isolado
- Um recurso pode pertencer simultaneamente a uma organização tenant e a um proprietário individual
- Uma linguagem compartilhada de abilities entre a aplicação web e a API Fastify reduz divergências de autorização
- Assentos faturáveis representam uma responsabilidade de negócio separada, com exclusão estrita de papéis
Principais trade-offs & decisões de engenharia
- Monorepo organizado com Turborepo e pacotes compartilhados para autorização, tipos e schemas de banco de dados
- Definições compartilhadas de permissões CASL consumidas tanto por Server Actions do Next.js quanto por endpoints do Fastify
- Estruturação das queries principais de projetos em torno do vínculo com a organização e do contexto de ownership armazenado
- Exclusão de papéis exclusivos de faturamento das métricas de cálculo de assentos para evitar cobranças indevidas
Evidências de implementação verificadas
- Suporte a convites de organizações, papéis de membros e workflows de transferência de ownership
- Comportamento de onboarding por domínio da organização e autorização de projetos sustentada por registros persistidos do proprietário
- Autenticação dupla via credenciais de senha e integração OAuth com o GitHub
Stack tecnológica verificada
- Workspaces Turborepo
- Next.js App Router
- API REST Fastify
- Prisma ORM
- Zod & OpenAPI
- Pacote CASL compartilhado
- Server Actions
Escopo do projeto
- Foco em organização de monorepo, autenticação, organizações e vínculos de membros, convites, ownership de projetos, abilities CASL compartilhadas, queries de projetos escopadas ao tenant, separação de papéis de faturamento e transferência de ownership.