Files
RDO/documentation/README_SAAS_MULTI_TENANT.md
2026-02-20 07:25:32 -03:00

8.2 KiB
Raw Blame History

🏗️ RDO - Sistema SaaS Multi-Tenant

📖 Sobre o Projeto

Sistema de gestão de RDO (Relatório Diário de Obra) focado em estruturas metálicas, transformado em modelo SaaS multi-tenant para permitir que múltiplas empresas de construção usem a mesma plataforma de forma isolada e segura.


📚 DOCUMENTAÇÃO COMPLETA

🎯 Comece por aqui:

  1. RESUMO_ACOES_PRIORITARIAS.md

    • Visão geral rápida
    • Próximos passos imediatos
    • Ordem de implementação
  2. CHECKLIST_IMPLEMENTACAO.md

    • Checklist interativo
    • Marque conforme avança
    • Estimativas de tempo

📋 Documentação Técnica:

  1. PLANO_SAAS_MULTI_TENANT.md

    • Plano completo detalhado
    • Todas as fases explicadas
    • Modelo de negócio sugerido
  2. ARQUITETURA_MULTI_TENANT.md

    • Diagramas de arquitetura
    • Fluxos de dados
    • Explicação do RLS
  3. INSTRUCOES_DEPLOY_SUPABASE.md

    • Como aplicar migrations
    • Opções de deploy
    • Troubleshooting

🚀 INÍCIO RÁPIDO

Pré-requisitos

  • Node.js 18+
  • Supabase CLI instalado
  • Conta no Supabase
  • Projeto RDO criado no Supabase

1 Aplicar Migrations (PRIMEIRO PASSO)

# Linkar projeto
supabase link --project-ref bbyzrywmgjiufqtnkslu

# Aplicar migrations
supabase db push

# Verificar
node check-supabase-status.js

2 Instalar Dependências

npm install

3 Configurar Variáveis de Ambiente

Arquivo .env já está configurado com:

VITE_SUPABASE_URL=https://bbyzrywmgjiufqtnkslu.supabase.co
VITE_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIs...

4 Iniciar Desenvolvimento

npm run dev

📁 ESTRUTURA DO PROJETO

├── supabase/
│   └── migrations/              # Migrations SQL
│       ├── 20241202000001_create_multi_tenant_schema.sql
│       ├── 20241202000002_create_functions_and_triggers.sql
│       ├── 20241202000003_create_rls_policies.sql
│       └── 20241202000004_seed_initial_data.sql
│
├── src/
│   ├── components/              # Componentes React
│   ├── contexts/                # Contexts (Auth, Organization)
│   ├── hooks/                   # Custom hooks
│   ├── lib/                     # Utilitários (Supabase, etc)
│   ├── pages/                   # Páginas da aplicação
│   ├── stores/                  # Zustand stores
│   ├── types/                   # TypeScript types
│   └── utils/                   # Funções auxiliares
│
├── docs/                        # Documentação (este arquivo)
│   ├── RESUMO_ACOES_PRIORITARIAS.md
│   ├── CHECKLIST_IMPLEMENTACAO.md
│   ├── PLANO_SAAS_MULTI_TENANT.md
│   ├── ARQUITETURA_MULTI_TENANT.md
│   └── INSTRUCOES_DEPLOY_SUPABASE.md
│
├── check-supabase-status.js     # Script de verificação
├── apply-migrations.js          # Script de deploy
└── package.json

🗄️ SCHEMA DO BANCO DE DADOS

Tabelas Principais

organizacoes (Tenants)

  • Cada empresa é uma organização
  • Slug único para URLs amigáveis
  • Planos: trial, basic, professional, enterprise
  • Limites configuráveis por plano
  • Personalização (logo, cores, configurações)

usuarios

  • Vinculados a uma organização
  • Perfil estendido do auth.users

organizacao_usuarios

  • Relacionamento N:N entre usuários e organizações
  • Roles: owner, admin, engenheiro, mestre_obra, usuario
  • Permissões customizáveis

convites

  • Sistema de onboarding
  • Token único e seguro
  • Expiração configurável

obras, rdos, tarefas, etc.

  • Todas as tabelas existentes
  • Adicionado organizacao_id para isolamento
  • RLS habilitado

Segurança (RLS)

Todas as tabelas têm Row Level Security habilitado:

  • Usuários só veem dados da própria organização
  • Validação automática em todas as queries
  • Impossível acessar dados de outra organização

🎯 FUNCIONALIDADES PRINCIPAIS

Já Implementado (Backend)

  • Schema multi-tenant completo
  • Row Level Security (RLS)
  • Sistema de roles e permissões
  • Sistema de convites
  • Validação de quotas por plano
  • Triggers automáticos
  • Funções auxiliares

🚧 A Implementar (Frontend)

  • OrganizationContext
  • Roteamento com slug
  • Signup de organização
  • Sistema de convites (UI)
  • Dashboard de admin
  • Validação de quotas (UI)
  • Personalização de tema
  • Configurações dinâmicas

🔐 SEGURANÇA

Row Level Security (RLS)

Todas as tabelas têm políticas RLS que garantem:

  • Isolamento total entre organizações
  • Validação no nível do banco de dados
  • Não depende do frontend

Roles e Permissões

  • Owner: Acesso total, pode deletar organização
  • Admin: Gerencia usuários, obras e configurações
  • Engenheiro: Cria obras, aprova RDOs
  • Mestre de Obra: Cria e edita RDOs
  • Usuário: Visualização e tarefas básicas

Tokens e Convites

  • Tokens únicos e seguros
  • Expiração configurável (padrão: 7 dias)
  • Validação de email

📊 PLANOS E LIMITES

Trial (14 dias grátis)

  • 5 usuários
  • 3 obras
  • 100 RDOs/mês
  • 500 MB storage

Basic (R$ 99/mês)

  • 10 usuários
  • 5 obras
  • 300 RDOs/mês
  • 2 GB storage

Professional (R$ 299/mês)

  • 30 usuários
  • 15 obras
  • 1000 RDOs/mês
  • 10 GB storage
  • Personalização de marca

Enterprise (Customizado)

  • Ilimitado
  • API dedicada
  • Suporte 24/7

🛠️ SCRIPTS ÚTEIS

Desenvolvimento

npm run dev          # Iniciar dev server
npm run build        # Build de produção
npm run preview      # Preview do build
npm run check        # Type checking

Supabase

supabase link        # Linkar projeto
supabase db push     # Aplicar migrations
supabase db pull     # Baixar schema
supabase gen types   # Gerar tipos TypeScript

Verificação

node check-supabase-status.js    # Verificar banco
node apply-migrations.js         # Aplicar migrations

📈 ROADMAP

Fase 1: Fundação (Semana 1)

  • Schema multi-tenant
  • OrganizationContext
  • Roteamento com slug
  • Atualizar queries

Fase 2: Onboarding (Semana 2)

  • Signup de organização
  • Sistema de convites
  • Dashboard de admin

Fase 3: Refinamento (Semana 3)

  • Validação de quotas
  • Personalização
  • Testes completos

Fase 4: Produção (Semana 4)

  • Deploy
  • Monitoramento
  • Documentação final

🧪 TESTES

Testar Isolamento

# Criar 2 organizações
# Verificar que não há vazamento de dados

Testar Permissões

# Testar cada role
# Verificar restrições

Testar Quotas

# Atingir limites
# Verificar bloqueios

📞 SUPORTE

Documentação

  • Veja os arquivos .md na raiz do projeto
  • Cada fase tem explicação detalhada

Problemas Comuns

  • Migrations falhando: Veja INSTRUCOES_DEPLOY_SUPABASE.md
  • RLS bloqueando queries: Verifique políticas
  • Tipos TypeScript: Regenere com supabase gen types

Contato

  • Abra uma issue no repositório
  • Consulte a documentação técnica
  • Revise os exemplos de código

🎉 CONTRIBUINDO

  1. Fork o projeto
  2. Crie uma branch: git checkout -b feature/nova-funcionalidade
  3. Commit: git commit -m 'Adiciona nova funcionalidade'
  4. Push: git push origin feature/nova-funcionalidade
  5. Abra um Pull Request

📄 LICENÇA

Este projeto está sob a licença MIT. Veja o arquivo LICENCE.md para mais detalhes.


🙏 AGRADECIMENTOS

  • Supabase pela plataforma incrível
  • React e Vite pela base sólida
  • Comunidade open source

📊 STATUS DO PROJETO

Versão: 2.0.0-alpha (Multi-tenant) Status: Em desenvolvimento Última atualização: 02/12/2024

Progresso Geral: 40%

  • Backend (100%)
  • 🚧 Frontend (0%)
  • 🚧 Testes (0%)
  • 🚧 Documentação (80%)

Pronto para transformar seu RDO em um SaaS de sucesso! 🚀

Para começar, veja: RESUMO_ACOES_PRIORITARIAS.md