Click Start your project → sign up with Google (easiest) or email.
Once inside, click New Project:
• Name it: divine-projections
• Pick any password
• Region: South Africa (Cape Town)
• Click Create new project and wait 2 minutes.
2 Run the setup code (copy and paste — no typing needed)
Inside your Supabase project:
1. Click SQL Editor in the left menu
2. Click New query
3. Click the button below to copy the code
4. Paste it into the box (Ctrl+V or Cmd+V)
5. Click the green Run button
You should see: "Success. No rows returned." — that means it worked! ✅
-- Divine Projections OS Setup
-- Just paste this and click Run
create table if not exists public.clients (
id bigserial primary key, name text not null, initials text,
type text, status text default 'LEAD', value numeric default 0,
email text, phone text, location text, since text,
nps integer default 0, color text default '#C9A84C', notes text,
user_id uuid references auth.users(id) on delete cascade,
created_at timestamptz default now()
);
create table if not exists public.projects (
id bigserial primary key, name text not null, client_name text,
status text default 'SCHEDULED', progress integer default 0,
due_date text, budget numeric default 0, type text,
tasks_total integer default 0, tasks_done integer default 0,
color text default '#C9A84C',
user_id uuid references auth.users(id) on delete cascade,
created_at timestamptz default now()
);
create table if not exists public.tasks (
id bigserial primary key, title text not null, client_name text,
status text default 'TODO', priority text default 'MED', due_label text,
user_id uuid references auth.users(id) on delete cascade,
created_at timestamptz default now()
);
create table if not exists public.invoices (
id text primary key, client_name text, amount numeric default 0,
status text default 'PENDING', due_date text, issued_date text, description text,
user_id uuid references auth.users(id) on delete cascade,
created_at timestamptz default now()
);
create table if not exists public.proposals (
id text primary key, client_name text, title text,
value numeric default 0, status text default 'DRAFT',
views integer default 0, date_label text,
user_id uuid references auth.users(id) on delete cascade,
created_at timestamptz default now()
);
create table if not exists public.documents (
id bigserial primary key, folder_name text, file_name text,
file_size text, file_date text, file_type text,
user_id uuid references auth.users(id) on delete cascade,
created_at timestamptz default now()
);
alter table public.clients enable row level security;
alter table public.projects enable row level security;
alter table public.tasks enable row level security;
alter table public.invoices enable row level security;
alter table public.proposals enable row level security;
alter table public.documents enable row level security;
drop policy if exists "own_clients" on public.clients;
drop policy if exists "own_projects" on public.projects;
drop policy if exists "own_tasks" on public.tasks;
drop policy if exists "own_invoices" on public.invoices;
drop policy if exists "own_proposals" on public.proposals;
drop policy if exists "own_documents" on public.documents;
create policy "own_clients" on public.clients for all using (auth.uid()=user_id) with check (auth.uid()=user_id);
create policy "own_projects" on public.projects for all using (auth.uid()=user_id) with check (auth.uid()=user_id);
create policy "own_tasks" on public.tasks for all using (auth.uid()=user_id) with check (auth.uid()=user_id);
create policy "own_invoices" on public.invoices for all using (auth.uid()=user_id) with check (auth.uid()=user_id);
create policy "own_proposals" on public.proposals for all using (auth.uid()=user_id) with check (auth.uid()=user_id);
create policy "own_documents" on public.documents for all using (auth.uid()=user_id) with check (auth.uid()=user_id);
3 Copy your two keys from Supabase
Still in Supabase, click Project Settings (the gear icon ⚙️ at the bottom left).
Then click API in the menu.
You will see two things to copy:
• Project URL — looks like: https://abc123.supabase.co
• anon public key — a very long code starting with eyJ...
Paste both into the boxes below, then click the button.