8.2 KiB
8.2 KiB
🏗️ 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:
-
RESUMO_ACOES_PRIORITARIAS.md ⭐
- Visão geral rápida
- Próximos passos imediatos
- Ordem de implementação
-
- Checklist interativo
- Marque conforme avança
- Estimativas de tempo
📋 Documentação Técnica:
-
- Plano completo detalhado
- Todas as fases explicadas
- Modelo de negócio sugerido
-
- Diagramas de arquitetura
- Fluxos de dados
- Explicação do RLS
-
- 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_idpara 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
- Fork o projeto
- Crie uma branch:
git checkout -b feature/nova-funcionalidade - Commit:
git commit -m 'Adiciona nova funcionalidade' - Push:
git push origin feature/nova-funcionalidade - 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