Configure o Supabase para começar
1
Acesse supabase.com → crie um projeto → vá em Project Settings → API e copie a Project URL e a chave anon public.
2
No painel, vá em SQL Editor → cole e execute o SQL abaixo para criar todas as tabelas incluindo autenticação.
3
Em Authentication → Providers, certifique-se que Email está habilitado. Cole as credenciais e conecte.
▸ Mostrar SQL completo (com auth + perfis)
-- FLEETPRO — Schema completo
create extension if not exists "uuid-ossp";
create table perfis (id uuid primary key references auth.users(id) on delete cascade, nome text not null, email text not null, perfil text not null default 'atendente' check (perfil in ('admin','atendente','investidor')), ativo boolean default true, created_at timestamptz default now());
create table clientes (id uuid primary key default uuid_generate_v4(), nome text not null, cpf text unique not null, email text, telefone text, cnh text, cnh_validade date, endereco text, observacoes text, created_at timestamptz default now());
create table veiculos (id uuid primary key default uuid_generate_v4(), tipo text not null check (tipo in ('carro','moto')), marca text not null, modelo text not null, placa text unique not null, ano int, cor text, cambio text, km_atual int default 0, diaria numeric(10,2) not null, status text default 'disponivel' check (status in ('disponivel','alugado','manutencao','reservado')), observacoes text, created_at timestamptz default now());
create table locacoes (id uuid primary key default uuid_generate_v4(), veiculo_id uuid references veiculos(id), cliente_id uuid references clientes(id), data_inicio date not null, data_fim date not null, km_inicial int, km_final int, diaria numeric(10,2), total numeric(10,2), status text default 'ativa' check (status in ('ativa','encerrada','cancelada')), observacoes text, criado_por uuid references auth.users(id), created_at timestamptz default now());
create table manutencoes (id uuid primary key default uuid_generate_v4(), veiculo_id uuid references veiculos(id), tipo text not null, descricao text, custo numeric(10,2), data_inicio date not null, data_fim date, oficina text, status text default 'pendente' check (status in ('pendente','em_andamento','concluida')), created_at timestamptz default now());
create table wpp_mensagens (id uuid primary key default uuid_generate_v4(), cliente_id uuid references clientes(id), numero text not null, texto text, tipo text default 'text' check (tipo in ('text','image','audio','document')), direcao text default 'saida' check (direcao in ('saida','entrada')), media_url text, created_at timestamptz default now());
create table reservas (id uuid primary key default uuid_generate_v4(), cliente_id uuid references clientes(id), veiculo_id uuid references veiculos(id), data_inicio timestamptz not null, data_fim timestamptz not null, valor_pago numeric(10,2) default 0, observacoes text, status text default 'ativa' check (status in ('ativa','convertida','cancelada','expirada')), criado_por uuid references auth.users(id), created_at timestamptz default now());
alter table perfis disable row level security;
alter table clientes disable row level security;
alter table veiculos disable row level security;
alter table locacoes disable row level security;
alter table manutencoes disable row level security;
alter table wpp_mensagens disable row level security;
alter table reservas disable row level security;
create or replace function handle_new_user() returns trigger as $$ begin insert into perfis (id, nome, email, perfil) values (new.id, coalesce(new.raw_user_meta_data->>'nome', split_part(new.email,'@',1)), new.email, coalesce(new.raw_user_meta_data->>'perfil', 'atendente')); return new; end; $$ language plpgsql security definer;
create trigger on_auth_user_created after insert on auth.users for each row execute function handle_new_user();
insert into veiculos (tipo,marca,modelo,placa,ano,cor,cambio,km_atual,diaria,status) values ('carro','Honda','Civic','ABC-1234',2022,'Prata','Automatico',32100,180,'disponivel'),('carro','Chevrolet','Onix','DEF-5678',2021,'Branco','Manual',48900,120,'disponivel'),('moto','Honda','CB 300','XYZ-9988',2023,'Preta','Manual',8400,90,'disponivel');
Project Settings → API → Project URL
Project Settings → API → anon public
Criar conta grátis no Supabase → · Limpar dados salvos
FleetPro
Carregando sistema...
Dashboard
admin
🚗
Carros disp.
de 0 total
🏍️
Motos disp.
de 0 total
👥
Clientes
cadastrados
📋
Locações ativas
em andamento
⚠️
Alertas de atraso
verificando...
📅 Agenda da semana
Seg
Ter
Qua
Qui
Sex
Sáb
Dom
Locações
Atrasos
Reservas
🚦 Status da frota
Locações em andamento
VeículoClienteDevoluçãoStatus
⚡ Atividade recente
🗓️ Reservas ativas
VeículoClienteRetiradaPrazo
Manutenções
VeículoServiçoStatus
VeículoPlacaAnoKmDiáriaStatus
VeículoPlacaAnoKmDiáriaStatus
Selecionar veículo
VeículoPlaca
Selecione um veículo
Histórico completo

← Selecione um veículo

ClienteCPFTelefoneCNH validadeStatus CNH
VeículoClienteInícioDevoluçãoStatus
ClienteVeículoInícioFimValor pagoStatus
Contrato #1
Dados do contrato
👤 Cliente e veículo
🧑‍💼 Condutores
📅 Período e local
💰 Valores
🏍️ Específico — Moto
🔧 Serviços / Taxas adicionais
📝 Observações
Pré-visualização MOTO
ROYAL RENT A CAR LTDA
CNPJ: 18.686.521/0002-90
Tel: (21) 96894-9627 | sac@locadoraroyal.com.br
CONTRATO #1
Situação: Em Vigência
CLIENTE
___
CPF: ___
Tel: ___
CONDUTOR(ES)
___
CPF: ___
RETIRADA
Placa: ___
Local: Loja
Data:
Royal Rent A Car Ltda
Av. das Américas, 12900
DEVOLUÇÃO
Placa: ___
Local: Loja
Data:
Royal Rent A Car Ltda
Av. das Américas, 12900
Veículo Período Valor Unit. Total
___ R$ 0,00 R$ 0,00
Pagamento: PIX
Caução: R$ 0,00
VALOR TOTAL DO CONTRATO R$ 0,00
Obs:
Cliente
Motorista
Atendente
Dom
Seg
Ter
Qua
Qui
Sex
Sáb
Carro Moto Reserva
Disponibilidade — Selecione uma data
Clique em um dia.
💬 WhatsApp
● Desconectado
?
Selecione
Selecione uma conversa
Desconectado
Conexão WPP ⚙ configurar
Respostas rápidas ✏️ editar
Assinatura
Gerenciar usuários
Controle de acesso e perfis
🚫
Acesso negado
Seu perfil não tem permissão para acessar esta seção. Fale com o administrador.