5.2 KiB
5.2 KiB
Configuração do Supabase para AppBarber
Este guia explica como configurar o Supabase para que todas as marcações sejam guardadas na base de dados em vez de apenas localmente.
Passo 1: Criar projeto no Supabase
- Aceda a https://supabase.com
- Crie uma conta ou faça login
- Clique em "New Project"
- Escolha um nome para o projeto (ex: "AppBarber")
- Escolha uma password de base de dados e guarde-a
- Selecione a região mais próxima (ex: "South America East" para Portugal)
- Clique em "Create new project" e aguarde a criação (2-3 minutos)
Passo 2: Obter credenciais
- No dashboard do Supabase, aceda a "Settings" > "API"
- Copie o "Project URL"
- Copie o "anon public key"
Passo 3: Configurar o projeto
- No arquivo
.envna raiz do projeto, substitua:Por:EXPO_PUBLIC_SUPABASE_URL=your-supabase-project-url EXPO_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-keyEXPO_PUBLIC_SUPABASE_URL=https://seu-projeto-id.supabase.co EXPO_PUBLIC_SUPABASE_ANON_KEY=sua-chave-anon-real
Passo 4: Criar tabelas no Supabase
No SQL Editor do Supabase, execute os seguintes comandos:
-- Tabela de utilizadores
CREATE TABLE users (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
phone TEXT,
role TEXT NOT NULL CHECK (role IN ('customer', 'barber', 'admin')),
photo TEXT,
loyalty_points INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabela de serviços
CREATE TABLE services (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
duration INTEGER NOT NULL,
price DECIMAL(10,2) NOT NULL,
image TEXT,
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabela de barbeiros
CREATE TABLE barbers (
id TEXT PRIMARY KEY,
user_id TEXT REFERENCES users(id) ON DELETE CASCADE,
specialty TEXT,
bio TEXT,
rating DECIMAL(3,1) DEFAULT 4.5,
availability JSONB,
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabela de marcações
CREATE TABLE bookings (
id TEXT PRIMARY KEY,
customer_id TEXT REFERENCES users(id) ON DELETE CASCADE,
barber_id TEXT REFERENCES barbers(id) ON DELETE CASCADE,
service_id TEXT REFERENCES services(id) ON DELETE CASCADE,
booking_date DATE NOT NULL,
booking_time TIME NOT NULL,
status TEXT DEFAULT 'pending' CHECK (status IN ('pending', 'confirmed', 'completed', 'cancelled')),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabela de reviews
CREATE TABLE reviews (
id TEXT PRIMARY KEY,
user_id TEXT REFERENCES users(id) ON DELETE CASCADE,
barber_id TEXT REFERENCES barbers(id) ON DELETE CASCADE,
service_id TEXT REFERENCES services(id) ON DELETE SET NULL,
rating INTEGER CHECK (rating >= 1 AND rating <= 5),
comment TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabela de promoções
CREATE TABLE promotions (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
discount_percentage INTEGER,
is_active BOOLEAN DEFAULT true,
start_date DATE,
end_date DATE,
image TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Passo 5: Inserir dados iniciais (opcional)
-- Inserir serviços
INSERT INTO services (id, name, description, duration, price, image) VALUES
('svc-1', 'Corte Clássico', 'Corte de precisão adaptado ao formato do seu rosto. Inclui lavagem, corte e penteado com produtos premium.', 30, 35.00, 'https://images.unsplash.com/photo-1599351431202-1e0f0137899a?w=400'),
('svc-2', 'Escultura de Barba', 'Aparar e moldar a barba completa com tratamento de toalha quente e acabamento com navalha.', 25, 28.00, 'https://images.unsplash.com/photo-1621605815971-fbc98d665033?w=400'),
('svc-3', 'Barbear com Toalha Quente', 'Barbear tradicional com navalha, toalhas quentes, óleo pré-barba e bálsamo pós-barba.', 45, 45.00, 'https://images.unsplash.com/photo-1503951914875-452162b0f77f?w=400'),
('svc-4', 'Combo Corte + Barba', 'Pacote completo de grooming. Corte de cabelo completo com lavagem e penteado + aparar e moldar barba.', 55, 55.00, 'https://images.unsplash.com/photo-1633681926022-84c23e8cb2d6?w=400'),
('svc-5', 'Tratamento Real', 'Experiência premium: corte de cabelo, escultura de barba, barbear com toalha quente, esfoliação facial e massagem no couro cabeludo.', 90, 95.00, 'https://images.unsplash.com/photo-1605497788044-5a32c7078486?w=400'),
('svc-6', 'Corte para Crianças', 'Experiência de corte suave e divertida para meninos com menos de 12 anos. Inclui rebuçado!', 20, 22.00, 'https://images.unsplash.com/photo-1622286342621-4bd786c2447c?w=400');
Passo 6: Reiniciar a aplicação
- Pare o servidor atual (Ctrl+C)
- Execute novamente:
npm run web
Verificação
Após configurar, quando fizer uma marcação:
- ✅ Os dados serão guardados no Supabase
- ✅ Receberá uma notificação detalhada da marcação
- ✅ Poderá ver "Ver Minhas Marcações" para aceder ao histórico
- ✅ As marcações persistirão mesmo em diferentes dispositivos
Suporte
Se encontrar problemas:
- Verifique que as credenciais no
.envestão corretas - Confirme que as tabelas foram criadas no Supabase
- Verifique os RLS (Row Level Security) policies se necessário