🔑 Recuperar senha

Informe seu e-mail e enviaremos um link para criar uma nova senha.

Dashboard
DoPampa3D Manager

⚙️ Configuração do Supabase

Cole as credenciais do seu projeto Supabase para conectar o sistema ao banco de dados na nuvem.

🔐 E-mail do Administrador

Somente este e-mail terá acesso a este painel. Qualquer outro usuário cadastrado no Supabase será bloqueado.

⚠️ Importante: O e-mail é salvo na tabela sistema_config do Supabase. Se ainda não rodou o SQL dos expositores, faça isso primeiro para que essa tabela exista.

🗄️ Criar Tabelas no Supabase

No painel do Supabase, vá em SQL EditorNew query e cole o SQL abaixo. Execute uma vez e as tabelas estarão prontas.

-- 1. Filamentos CREATE TABLE filamentos ( id uuid DEFAULT gen_random_uuid() PRIMARY KEY, marca text NOT NULL, cor text NOT NULL, cor_hex text DEFAULT '#ffffff', tipo text NOT NULL DEFAULT 'PLA', peso_total integer NOT NULL DEFAULT 1000, peso_restante integer NOT NULL DEFAULT 1000, preco_kg numeric(10,2) NOT NULL DEFAULT 0, preco_total numeric(10,2) DEFAULT 0, pago_status text DEFAULT 'pendente', alerta_g integer NOT NULL DEFAULT 200, ativo boolean DEFAULT true, created_at timestamptz DEFAULT now() ); -- 2. Catálogo de produtos CREATE TABLE catalogo ( id uuid DEFAULT gen_random_uuid() PRIMARY KEY, nome text NOT NULL, descricao text, foto_url text, tempo_horas numeric(6,2) DEFAULT 0, peso_g numeric(8,2) DEFAULT 0, custo numeric(10,2) DEFAULT 0, preco_venda numeric(10,2) DEFAULT 0, tipo text DEFAULT 'PLA', categoria text, largura numeric(8,2) DEFAULT 0, altura numeric(8,2) DEFAULT 0, profundidade numeric(8,2) DEFAULT 0, filamentos_ids jsonb DEFAULT '[]', ativo boolean DEFAULT true, created_at timestamptz DEFAULT now() ); -- 3. Clientes CREATE TABLE clientes ( id uuid DEFAULT gen_random_uuid() PRIMARY KEY, nome text NOT NULL, telefone text, email text, endereco text, cidade text, estado text DEFAULT 'RS', total_gasto numeric(10,2) DEFAULT 0, created_at timestamptz DEFAULT now() ); -- 4. Pedidos CREATE TABLE pedidos ( id uuid DEFAULT gen_random_uuid() PRIMARY KEY, numero serial, cliente_id uuid REFERENCES clientes(id), cliente_nome text, produto_nome text, catalogo_id uuid REFERENCES catalogo(id), filamento_id uuid REFERENCES filamentos(id), filamento_nome text, filamentos_usados jsonb DEFAULT '[]', quantidade integer DEFAULT 1, peso_total_g numeric(8,2) DEFAULT 0, valor numeric(10,2) DEFAULT 0, status text DEFAULT 'feito', pago text DEFAULT 'nao', rastreio text, observacoes text, largura numeric(8,2) DEFAULT 0, altura numeric(8,2) DEFAULT 0, profundidade numeric(8,2) DEFAULT 0, created_at timestamptz DEFAULT now(), updated_at timestamptz DEFAULT now() ); -- 5. RLS: habilitar e liberar acesso total para usuários autenticados ALTER TABLE filamentos ENABLE ROW LEVEL SECURITY; ALTER TABLE catalogo ENABLE ROW LEVEL SECURITY; ALTER TABLE clientes ENABLE ROW LEVEL SECURITY; ALTER TABLE pedidos ENABLE ROW LEVEL SECURITY; -- Policies: qualquer usuário autenticado pode ler e escrever CREATE POLICY "acesso_autenticado" ON filamentos FOR ALL TO authenticated USING (true) WITH CHECK (true); CREATE POLICY "acesso_autenticado" ON catalogo FOR ALL TO authenticated USING (true) WITH CHECK (true); CREATE POLICY "acesso_autenticado" ON clientes FOR ALL TO authenticated USING (true) WITH CHECK (true); CREATE POLICY "acesso_autenticado" ON pedidos FOR ALL TO authenticated USING (true) WITH CHECK (true);

🔧 Migração / Correção de Erros

Se você já criou as tabelas e está recebendo erros como "violates row-level security policy" ou "column not found in schema cache", execute este SQL no Supabase → SQL Editor para corrigir tudo de uma vez:

-- ══ MIGRAÇÃO COMPLETA ══ -- Execute no Supabase → SQL Editor -- Seguro para rodar mesmo se as colunas já existirem -- 1. Adicionar colunas que possam estar faltando em filamentos ALTER TABLE filamentos ADD COLUMN IF NOT EXISTS pago_status text DEFAULT 'pendente'; ALTER TABLE filamentos ADD COLUMN IF NOT EXISTS preco_total numeric(10,2) DEFAULT 0; ALTER TABLE filamentos ADD COLUMN IF NOT EXISTS cor_hex text DEFAULT '#ffffff'; ALTER TABLE filamentos ADD COLUMN IF NOT EXISTS alerta_g integer NOT NULL DEFAULT 200; ALTER TABLE filamentos ADD COLUMN IF NOT EXISTS ativo boolean DEFAULT true; -- 2. Adicionar colunas que possam estar faltando em catalogo ALTER TABLE catalogo ADD COLUMN IF NOT EXISTS filamentos_ids jsonb DEFAULT '[]'; ALTER TABLE catalogo ADD COLUMN IF NOT EXISTS foto_url text; ALTER TABLE catalogo ADD COLUMN IF NOT EXISTS largura numeric(8,2) DEFAULT 0; ALTER TABLE catalogo ADD COLUMN IF NOT EXISTS altura numeric(8,2) DEFAULT 0; ALTER TABLE catalogo ADD COLUMN IF NOT EXISTS profundidade numeric(8,2) DEFAULT 0; ALTER TABLE catalogo ADD COLUMN IF NOT EXISTS ativo boolean DEFAULT true; ALTER TABLE catalogo ADD COLUMN IF NOT EXISTS categoria text; -- 3. Adicionar colunas que possam estar faltando em pedidos ALTER TABLE pedidos ADD COLUMN IF NOT EXISTS catalogo_id uuid REFERENCES catalogo(id); ALTER TABLE pedidos ADD COLUMN IF NOT EXISTS filamento_id uuid REFERENCES filamentos(id); ALTER TABLE pedidos ADD COLUMN IF NOT EXISTS filamento_nome text; ALTER TABLE pedidos ADD COLUMN IF NOT EXISTS filamentos_usados jsonb DEFAULT '[]'; ALTER TABLE pedidos ADD COLUMN IF NOT EXISTS rastreio text; ALTER TABLE pedidos ADD COLUMN IF NOT EXISTS observacoes text; ALTER TABLE pedidos ADD COLUMN IF NOT EXISTS largura numeric(8,2) DEFAULT 0; ALTER TABLE pedidos ADD COLUMN IF NOT EXISTS altura numeric(8,2) DEFAULT 0; ALTER TABLE pedidos ADD COLUMN IF NOT EXISTS profundidade numeric(8,2) DEFAULT 0; ALTER TABLE pedidos ADD COLUMN IF NOT EXISTS updated_at timestamptz DEFAULT now(); -- 4. Adicionar colunas que possam estar faltando em clientes ALTER TABLE clientes ADD COLUMN IF NOT EXISTS total_gasto numeric(10,2) DEFAULT 0; -- 5. Corrigir RLS — habilitar e criar policies para usuários autenticados ALTER TABLE filamentos ENABLE ROW LEVEL SECURITY; ALTER TABLE catalogo ENABLE ROW LEVEL SECURITY; ALTER TABLE clientes ENABLE ROW LEVEL SECURITY; ALTER TABLE pedidos ENABLE ROW LEVEL SECURITY; -- Remover policies antigas se existirem (evita erro de duplicata) DROP POLICY IF EXISTS "acesso_autenticado" ON filamentos; DROP POLICY IF EXISTS "acesso_autenticado" ON catalogo; DROP POLICY IF EXISTS "acesso_autenticado" ON clientes; DROP POLICY IF EXISTS "acesso_autenticado" ON pedidos; -- Criar policies novas CREATE POLICY "acesso_autenticado" ON filamentos FOR ALL TO authenticated USING (true) WITH CHECK (true); CREATE POLICY "acesso_autenticado" ON catalogo FOR ALL TO authenticated USING (true) WITH CHECK (true); CREATE POLICY "acesso_autenticado" ON clientes FOR ALL TO authenticated USING (true) WITH CHECK (true); CREATE POLICY "acesso_autenticado" ON pedidos FOR ALL TO authenticated USING (true) WITH CHECK (true);

🏪 SQL — Módulo Expositores

Se você ainda não criou as tabelas de expositores, rode este SQL no Supabase → SQL Editor. Substitua SEU_EMAIL@AQUI.COM pelo seu e-mail antes de executar.

-- 1. Tabela de expositores (lojas parceiras) CREATE TABLE IF NOT EXISTS expositores ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE, nome_loja TEXT NOT NULL, responsavel TEXT, telefone TEXT, endereco TEXT, email_acesso TEXT, ativo BOOLEAN DEFAULT true, created_at TIMESTAMPTZ DEFAULT now() ); -- 2. Estoque vinculado a cada expositor CREATE TABLE IF NOT EXISTS expositor_estoque ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), expositor_id UUID REFERENCES expositores(id) ON DELETE CASCADE, catalogo_id UUID REFERENCES catalogo(id) ON DELETE CASCADE, quantidade_inicial INTEGER DEFAULT 0, quantidade_atual INTEGER DEFAULT 0, preco_venda NUMERIC(10,2) DEFAULT 0, created_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now() ); -- 3. Histórico de movimentações (com campos extras para venda) CREATE TABLE IF NOT EXISTS expositor_movimentacoes ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), expositor_id UUID REFERENCES expositores(id) ON DELETE CASCADE, estoque_id UUID REFERENCES expositor_estoque(id) ON DELETE CASCADE, tipo TEXT CHECK (tipo IN ('saida','entrada','ajuste','venda','cancelado')) NOT NULL, quantidade INTEGER NOT NULL, observacao TEXT, cliente_nome TEXT, status_pagamento TEXT, valor_total NUMERIC(10,2) DEFAULT 0, desconto_aplicado NUMERIC(10,2) DEFAULT 0, created_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now() ); -- 4. Configurações do sistema (admin_email e outras) CREATE TABLE IF NOT EXISTS sistema_config ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), chave TEXT UNIQUE NOT NULL, valor TEXT, updated_at TIMESTAMPTZ DEFAULT now() ); -- Inserir registro do e-mail admin (substitua pelo seu e-mail real) INSERT INTO sistema_config (chave, valor) VALUES ('admin_email', 'SEU_EMAIL@AQUI.COM') ON CONFLICT (chave) DO NOTHING; -- 5. RLS — acesso total para usuários autenticados (admin gerencia tudo) ALTER TABLE expositores ENABLE ROW LEVEL SECURITY; ALTER TABLE expositor_estoque ENABLE ROW LEVEL SECURITY; ALTER TABLE expositor_movimentacoes ENABLE ROW LEVEL SECURITY; ALTER TABLE sistema_config ENABLE ROW LEVEL SECURITY; -- Remover policies antigas se existirem (evita erro de duplicata) DROP POLICY IF EXISTS "expositor_own" ON expositores; DROP POLICY IF EXISTS "estoque_own" ON expositor_estoque; DROP POLICY IF EXISTS "movimentacao_own" ON expositor_movimentacoes; DROP POLICY IF EXISTS "admin_expositores" ON expositores; DROP POLICY IF EXISTS "admin_estoque" ON expositor_estoque; DROP POLICY IF EXISTS "admin_movimentacoes" ON expositor_movimentacoes; DROP POLICY IF EXISTS "acesso_autenticado" ON expositores; DROP POLICY IF EXISTS "acesso_autenticado" ON expositor_estoque; DROP POLICY IF EXISTS "acesso_autenticado" ON expositor_movimentacoes; DROP POLICY IF EXISTS "acesso_autenticado" ON sistema_config; -- Policies: qualquer usuário autenticado pode ler e escrever CREATE POLICY "acesso_autenticado" ON expositores FOR ALL TO authenticated USING (true) WITH CHECK (true); CREATE POLICY "acesso_autenticado" ON expositor_estoque FOR ALL TO authenticated USING (true) WITH CHECK (true); CREATE POLICY "acesso_autenticado" ON expositor_movimentacoes FOR ALL TO authenticated USING (true) WITH CHECK (true); -- sistema_config: qualquer autenticado lê, mas só o admin (verificado no app) escreve CREATE POLICY "acesso_autenticado" ON sistema_config FOR ALL TO authenticated USING (true) WITH CHECK (true);

🚀 Passo a passo

1
Acesse supabase.com e crie uma conta gratuita
2
Crie um novo projeto (guarde a senha do banco)
3
Vá em Project Settings → API e copie a Project URL e a anon public key
4
Cole as credenciais acima e clique em Salvar e Conectar
5
Vá em SQL Editor, cole o SQL acima e clique em Run
6
Pronto! Volte ao Dashboard e comece a usar.
Pedidos (mês)
por data de criação
Faturamento (mês)
por data de criação
Clientes
cadastrados
Filamentos
bobinas ativas
💸 A Pagar
investimentos pendentes
⚠️ Alertas de Estoque

Carregando...

🛒 Pedidos Recentes
#ClienteProdutoValorStatus
Carregando...
🧵 Estoque de Filamentos
🧵

Nenhum filamento cadastrado ainda.

🛒 Pedidos
#DataClienteProdutoQtdValorAndamentoPagoRastreio
Carregando...
👤 Clientes
NomeTelefoneCidade/UFPedidosTotalGasto
Carregando...
Total a Pagar
R$ 0,00
investimentos pendentes
Filamentos (custo)
R$ 0,00
valor total investido
Já Descontado
R$ 0,00
recuperado via pedidos
Saldo Restante
R$ 0,00
a recuperar
🧵 Investimentos em Filamentos
FilamentoTipoPesoTotalPreço/kgCustoTotalUsado(g)RecuperadoAPagarStatus
Carregando...
🛍️ Sugestão de Recompra

Carregando...

📦 Pedidos e Pagamentos
#ClienteProdutoValorAndamentoPago?Ações
Carregando...
⚡ Predefinições salvas
🧵
Filamento
Dados do rolo e do fatiador
R$/kg
g
g
Impressão multicolor (AMS / troca de filamento)
Impressão
Tempo e consumo de energia
h
min
W
R$/kWh
⚙️
Máquina e Consumíveis
Depreciação e desgaste — salvo automaticamente
R$
h
R$
h
Incluir desgaste da cama (PEI)
R$
h
📦
Embalagem e Envio
Custos de materiais de embalagem por pedido
Incluir custos de embalagem no cálculo
🗂️
Objetos na Mesa
Múltiplos modelos diferentes na mesma impressão
Impressão com múltiplos objetos diferentes
Modo atual: peça única ou lote idêntico. Use os campos de Filamento acima e Quantidade abaixo.
📊
Falhas e Preço de Venda
%
un
%
🏪
Taxas de Plataforma e Frete
Descontadas do preço de venda — salvo automaticamente
Incluir custo de frete no cálculo
🏪 Lojas Parceiras
LojaResponsávelTelefoneEndereçoStatusTermosCriado em
Carregando...