First commit - backup RDOC

This commit is contained in:
2026-02-20 07:20:32 -03:00
commit b7415f0586
259 changed files with 51707 additions and 0 deletions

View File

@@ -0,0 +1,361 @@
# 🏗️ 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](./RESUMO_ACOES_PRIORITARIAS.md)** ⭐
- Visão geral rápida
- Próximos passos imediatos
- Ordem de implementação
2. **[CHECKLIST_IMPLEMENTACAO.md](./CHECKLIST_IMPLEMENTACAO.md)** ✅
- Checklist interativo
- Marque conforme avança
- Estimativas de tempo
### 📋 **Documentação Técnica:**
3. **[PLANO_SAAS_MULTI_TENANT.md](./PLANO_SAAS_MULTI_TENANT.md)**
- Plano completo detalhado
- Todas as fases explicadas
- Modelo de negócio sugerido
4. **[ARQUITETURA_MULTI_TENANT.md](./ARQUITETURA_MULTI_TENANT.md)**
- Diagramas de arquitetura
- Fluxos de dados
- Explicação do RLS
5. **[INSTRUCOES_DEPLOY_SUPABASE.md](./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)
```bash
# Linkar projeto
supabase link --project-ref bbyzrywmgjiufqtnkslu
# Aplicar migrations
supabase db push
# Verificar
node check-supabase-status.js
```
### 2⃣ Instalar Dependências
```bash
npm install
```
### 3⃣ Configurar Variáveis de Ambiente
Arquivo `.env` já está configurado com:
```env
VITE_SUPABASE_URL=https://bbyzrywmgjiufqtnkslu.supabase.co
VITE_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIs...
```
### 4⃣ Iniciar Desenvolvimento
```bash
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)
- [x] Schema multi-tenant completo
- [x] Row Level Security (RLS)
- [x] Sistema de roles e permissões
- [x] Sistema de convites
- [x] Validação de quotas por plano
- [x] Triggers automáticos
- [x] 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
```bash
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
```bash
supabase link # Linkar projeto
supabase db push # Aplicar migrations
supabase db pull # Baixar schema
supabase gen types # Gerar tipos TypeScript
```
### Verificação
```bash
node check-supabase-status.js # Verificar banco
node apply-migrations.js # Aplicar migrations
```
---
## 📈 ROADMAP
### Fase 1: Fundação (Semana 1)
- [x] 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
```bash
# Criar 2 organizações
# Verificar que não há vazamento de dados
```
### Testar Permissões
```bash
# Testar cada role
# Verificar restrições
```
### Testar Quotas
```bash
# 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](./RESUMO_ACOES_PRIORITARIAS.md)