Primeiro commit
This commit is contained in:
148
SUPABASE-SETUP.md
Normal file
148
SUPABASE-SETUP.md
Normal file
@@ -0,0 +1,148 @@
|
||||
# 🚀 Configuração do Supabase - Liberi Kids Estoque
|
||||
|
||||
## 📋 Instruções para Configurar o Banco de Dados
|
||||
|
||||
### 1. **Acesse o Supabase Dashboard**
|
||||
- Vá para: https://xyqmlesqdqybiyjofysb.supabase.co
|
||||
- Faça login na sua conta
|
||||
|
||||
### 2. **Execute o Script SQL**
|
||||
1. No dashboard do Supabase, vá para **SQL Editor**
|
||||
2. Clique em **New Query**
|
||||
3. Copie e cole todo o conteúdo do arquivo `sql/create-tables.sql`
|
||||
4. Clique em **Run** para executar
|
||||
|
||||
### 3. **Criar Função de Atualização de Estoque**
|
||||
1. Ainda no SQL Editor, crie uma nova query
|
||||
2. Copie e cole o conteúdo do arquivo `sql/functions.sql`
|
||||
3. Execute a query
|
||||
|
||||
### 4. **Verificar Tabelas Criadas**
|
||||
1. Vá para **Table Editor** no menu lateral
|
||||
2. Você deve ver as seguintes tabelas:
|
||||
- ✅ `fornecedores`
|
||||
- ✅ `produtos`
|
||||
- ✅ `produto_variacoes`
|
||||
- ✅ `clientes`
|
||||
- ✅ `tipos_despesas`
|
||||
- ✅ `despesas`
|
||||
- ✅ `vendas`
|
||||
- ✅ `venda_itens`
|
||||
|
||||
### 5. **Configurar Políticas RLS (Row Level Security)**
|
||||
As políticas já estão incluídas no script SQL, mas você pode ajustá-las conforme necessário:
|
||||
|
||||
1. Vá para **Authentication** > **Policies**
|
||||
2. Verifique se todas as tabelas têm políticas habilitadas
|
||||
3. As políticas atuais permitem todas as operações para usuários autenticados
|
||||
|
||||
### 6. **Testar a Conexão**
|
||||
1. Inicie o servidor: `npm start`
|
||||
2. Acesse: http://localhost:5000
|
||||
3. Clique no botão "Testar API" na página de produtos
|
||||
4. Deve aparecer: "API Supabase funcionando corretamente!"
|
||||
|
||||
## 🔧 **Estrutura das Tabelas**
|
||||
|
||||
### **Fornecedores**
|
||||
- `id` (UUID, PK)
|
||||
- `razao_social` (TEXT, NOT NULL)
|
||||
- `telefone`, `whatsapp`, `endereco`, `email` (TEXT)
|
||||
- `created_at`, `updated_at` (TIMESTAMP)
|
||||
|
||||
### **Produtos**
|
||||
- `id` (UUID, PK)
|
||||
- `id_produto` (TEXT) - ID personalizado
|
||||
- `marca`, `nome` (TEXT, NOT NULL)
|
||||
- `estacao` (TEXT, NOT NULL)
|
||||
- `genero` (TEXT, DEFAULT 'Unissex')
|
||||
- `fornecedor_id` (UUID, FK)
|
||||
- `valor_compra`, `valor_revenda` (DECIMAL)
|
||||
- `foto_principal_url` (TEXT)
|
||||
- `created_at`, `updated_at` (TIMESTAMP)
|
||||
|
||||
### **Produto Variações**
|
||||
- `id` (UUID, PK)
|
||||
- `produto_id` (UUID, FK, NOT NULL)
|
||||
- `tamanho`, `cor` (TEXT, NOT NULL)
|
||||
- `quantidade` (INTEGER, DEFAULT 0)
|
||||
- `foto_url` (TEXT)
|
||||
- `created_at`, `updated_at` (TIMESTAMP)
|
||||
|
||||
### **Clientes**
|
||||
- `id` (UUID, PK)
|
||||
- `nome_completo` (TEXT, NOT NULL)
|
||||
- `email`, `telefone`, `whatsapp`, `endereco` (TEXT)
|
||||
- `created_at`, `updated_at` (TIMESTAMP)
|
||||
|
||||
### **Tipos de Despesas**
|
||||
- `id` (UUID, PK)
|
||||
- `nome` (TEXT, NOT NULL, UNIQUE)
|
||||
- `descricao` (TEXT)
|
||||
- `created_at` (TIMESTAMP)
|
||||
|
||||
### **Despesas**
|
||||
- `id` (UUID, PK)
|
||||
- `tipo_despesa_id` (UUID, FK, NOT NULL)
|
||||
- `fornecedor_id` (UUID, FK)
|
||||
- `data_despesa` (DATE, NOT NULL)
|
||||
- `valor` (DECIMAL, NOT NULL)
|
||||
- `descricao` (TEXT)
|
||||
- `created_at`, `updated_at` (TIMESTAMP)
|
||||
|
||||
### **Vendas**
|
||||
- `id` (UUID, PK)
|
||||
- `cliente_id` (UUID, FK)
|
||||
- `tipo_pagamento` (TEXT, CHECK: 'vista' ou 'parcelado')
|
||||
- `valor_total` (DECIMAL, NOT NULL)
|
||||
- `desconto` (DECIMAL, DEFAULT 0)
|
||||
- `parcelas` (INTEGER, DEFAULT 1)
|
||||
- `valor_parcela` (DECIMAL, DEFAULT 0)
|
||||
- `data_venda` (DATE, NOT NULL)
|
||||
- `observacoes` (TEXT)
|
||||
- `created_at`, `updated_at` (TIMESTAMP)
|
||||
|
||||
### **Venda Itens**
|
||||
- `id` (UUID, PK)
|
||||
- `venda_id` (UUID, FK, NOT NULL)
|
||||
- `produto_id` (UUID, FK, NOT NULL)
|
||||
- `variacao_id` (UUID, FK)
|
||||
- `quantidade` (INTEGER, NOT NULL)
|
||||
- `valor_unitario`, `valor_total` (DECIMAL, NOT NULL)
|
||||
- `created_at` (TIMESTAMP)
|
||||
|
||||
## 🎯 **Vantagens do Supabase**
|
||||
|
||||
✅ **Banco PostgreSQL robusto**
|
||||
✅ **Backup automático**
|
||||
✅ **Escalabilidade**
|
||||
✅ **Interface web para gerenciamento**
|
||||
✅ **APIs REST automáticas**
|
||||
✅ **Segurança com RLS**
|
||||
✅ **Sem problemas de concorrência**
|
||||
|
||||
## 🚨 **Comandos Importantes**
|
||||
|
||||
```bash
|
||||
# Iniciar com Supabase (padrão)
|
||||
npm start
|
||||
|
||||
# Iniciar com SQLite (backup)
|
||||
npm run start-sqlite
|
||||
|
||||
# Desenvolvimento com Supabase
|
||||
npm run dev
|
||||
|
||||
# Testar conexão com Supabase
|
||||
npm run init-supabase
|
||||
```
|
||||
|
||||
## 📞 **Suporte**
|
||||
|
||||
Se houver algum problema:
|
||||
1. Verifique se as tabelas foram criadas corretamente
|
||||
2. Confirme se as políticas RLS estão ativas
|
||||
3. Teste a conexão com o botão "Testar API"
|
||||
4. Verifique os logs do servidor no terminal
|
||||
|
||||
**O sistema agora está usando Supabase e deve funcionar perfeitamente! 🎉**
|
||||
Reference in New Issue
Block a user