Ga naar supabase.com → jouw project → Settings → API. Kopieer de Project URL en de anon public key.
Voer ook éénmalig dit SQL uit in de SQL Editor van Supabase:
create table if not exists app_users (
id uuid primary key default gen_random_uuid(),
email text unique not null,
password_hash text not null,
display_name text not null,
role text not null default 'user',
permissions jsonb not null default '{}',
created_at timestamptz default now()
);
create table if not exists transactions (
id uuid primary key default gen_random_uuid(),
name text not null, amount numeric not null,
type text not null, category text, date date not null,
created_at timestamptz default now()
);
create table if not exists books (
id uuid primary key default gen_random_uuid(),
title text not null,
author text,
cover_url text,
isbn text,
published_year text,
status text default 'want',
rating integer default 0,
notes text default '',
summary text default '',
publisher text default '',
pages integer,
genres text default '',
language text default '',
original_title text default '',
gb_id text default '',
created_at timestamptz default now()
);
-- Als je al een books-tabel hebt, voer dit ook uit:
alter table books add column if not exists summary text default '';
alter table books add column if not exists publisher text default '';
alter table books add column if not exists pages integer;
alter table books add column if not exists genres text default '';
alter table books add column if not exists language text default '';
alter table books add column if not exists original_title text default '';
alter table books add column if not exists gb_id text default '';
alter table app_users disable row level security;
alter table transactions disable row level security;
alter table books disable row level security;
-- Films / series
create table if not exists media (
id uuid primary key default gen_random_uuid(),
title text not null,
original_title text default '',
media_type text default 'film',
category text default '',
status text default 'want',
rating integer default 0,
notes text default '',
summary text default '',
poster_url text,
backdrop_url text,
release_year text default '',
genres text default '',
duration integer,
seasons integer,
episodes integer,
tmdb_id text default '',
director text default '',
cast_list text default '',
watched_seasons integer[] default '{}',
created_at timestamptz default now()
);
alter table media disable row level security;
alter table media add column if not exists watched_seasons integer[] default '{}';
-- Terugkerende kosten
create table if not exists recurring_costs (
id uuid primary key default gen_random_uuid(),
name text not null,
amount numeric not null,
category text default '',
type text default 'expense',
active boolean default true,
months integer[] default '{1,2,3,4,5,6,7,8,9,10,11,12}',
day_of_month integer,
created_at timestamptz default now()
);
alter table recurring_costs disable row level security;
alter table recurring_costs add column if not exists day_of_month integer;
-- Maandbudget
create table if not exists monthly_budgets (
id uuid primary key default gen_random_uuid(),
year integer not null,
month integer not null,
category text not null,
budget_amount numeric not null,
created_at timestamptz default now(),
unique(year, month, category)
);
alter table monthly_budgets disable row level security;
-- Categorieën (per module)
create table if not exists categories (
id uuid primary key default gen_random_uuid(),
module text not null,
name text not null,
icon text default '📁',
color text default '',
created_at timestamptz default now()
);
alter table categories disable row level security;
-- Recepten
create table if not exists recipes (
id uuid primary key default gen_random_uuid(),
title text not null,
category text default '',
description text default '',
prep_time integer,
cook_time integer,
base_servings integer default 4,
image_url text,
source_url text,
tags text default '',
rating integer default 0,
notes text default '',
created_at timestamptz default now()
);
alter table recipes disable row level security;
create table if not exists recipe_ingredients (
id uuid primary key default gen_random_uuid(),
recipe_id uuid references recipes(id) on delete cascade,
name text not null,
amount numeric,
unit text default '',
sort_order integer default 0
);
alter table recipe_ingredients disable row level security;
create table if not exists recipe_steps (
id uuid primary key default gen_random_uuid(),
recipe_id uuid references recipes(id) on delete cascade,
step_number integer not null,
instruction text not null
);
alter table recipe_steps disable row level security;
Je gegevens worden alleen lokaal opgeslagen.
Mijn Persoonlijke Hub
Eenmalige database setup
De verbinding met Supabase werkt ✓, maar de tabellen bestaan nog niet. Voer onderstaand SQL éénmalig uit in de Supabase SQL Editor.
create table if not exists app_users (
id uuid primary key default gen_random_uuid(),
email text unique not null,
password_hash text not null,
display_name text not null,
role text not null default 'user',
permissions jsonb not null default '{}',
created_at timestamptz default now()
);
create table if not exists transactions (
id uuid primary key default gen_random_uuid(),
name text not null, amount numeric not null,
type text not null, category text, date date not null,
created_at timestamptz default now()
);
create table if not exists books (
id uuid primary key default gen_random_uuid(),
title text not null, author text, cover_url text,
isbn text, published_year text, status text default 'want',
rating integer default 0, notes text default '',
summary text default '', publisher text default '',
pages integer, genres text default '',
language text default '', original_title text default '',
gb_id text default '', created_at timestamptz default now()
);
alter table app_users disable row level security;
alter table transactions disable row level security;
alter table books disable row level security;
-- Films / series
create table if not exists media (
id uuid primary key default gen_random_uuid(),
title text not null,
original_title text default '',
media_type text default 'film',
category text default '',
status text default 'want',
rating integer default 0,
notes text default '',
summary text default '',
poster_url text,
backdrop_url text,
release_year text default '',
genres text default '',
duration integer,
seasons integer,
episodes integer,
tmdb_id text default '',
director text default '',
cast_list text default '',
watched_seasons integer[] default '{}',
created_at timestamptz default now()
);
alter table media disable row level security;
-- Terugkerende kosten
create table if not exists recurring_costs (
id uuid primary key default gen_random_uuid(),
name text not null,
amount numeric not null,
category text default '',
type text default 'expense',
active boolean default true,
months integer[] default '{1,2,3,4,5,6,7,8,9,10,11,12}',
day_of_month integer,
created_at timestamptz default now()
);
alter table recurring_costs disable row level security;
-- Maandbudget
create table if not exists monthly_budgets (
id uuid primary key default gen_random_uuid(),
year integer not null,
month integer not null,
category text not null,
budget_amount numeric not null,
created_at timestamptz default now(),
unique(year, month, category)
);
alter table monthly_budgets disable row level security;
-- Categorieën (per module)
create table if not exists categories (
id uuid primary key default gen_random_uuid(),
module text not null,
name text not null,
icon text default '📁',
color text default '',
created_at timestamptz default now()
);
alter table categories disable row level security;
-- App-instellingen (API keys etc. opgeslagen in database)
create table if not exists app_settings (
key text primary key,
value text not null,
updated_at timestamptz default now()
);
alter table app_settings disable row level security;
-- Garanties
create table if not exists warranties (
id uuid primary key default gen_random_uuid(),
name text not null,
brand text default '',
category text default '',
purchase_date date not null,
purchase_price numeric,
warranty_months integer,
warranty_end_date date,
store text default '',
serial_number text default '',
notes text default '',
receipt_url text,
image_url text,
created_at timestamptz default now()
);
alter table warranties disable row level security;
-- Recepten (voeg toe als je de receptenmodule wil gebruiken)
create table if not exists recipes (
id uuid primary key default gen_random_uuid(),
title text not null,
category text default '',
description text default '',
prep_time integer,
cook_time integer,
base_servings integer default 4,
image_url text,
source_url text,
tags text default '',
rating integer default 0,
notes text default '',
created_at timestamptz default now()
);
alter table recipes disable row level security;
create table if not exists recipe_ingredients (
id uuid primary key default gen_random_uuid(),
recipe_id uuid references recipes(id) on delete cascade,
name text not null,
amount numeric,
unit text default '',
sort_order integer default 0
);
alter table recipe_ingredients disable row level security;
create table if not exists recipe_steps (
id uuid primary key default gen_random_uuid(),
recipe_id uuid references recipes(id) on delete cascade,
step_number integer not null,
instruction text not null
);
alter table recipe_steps disable row level security;
Als de basistabellen al bestaan maar je wil de nieuwe modules (films, terugkerende kosten) toevoegen, voer dan dit SQL uit:
create table if not exists media (
id uuid primary key default gen_random_uuid(),
title text not null,
original_title text default '',
media_type text default 'film',
category text default '',
status text default 'want',
rating integer default 0,
notes text default '',
summary text default '',
poster_url text,
release_year text default '',
genres text default '',
duration integer,
seasons integer,
episodes integer,
tmdb_id text default '',
director text default '',
cast_list text default '',
watched_seasons integer[] default '{}',
created_at timestamptz default now()
);
alter table media disable row level security;
create table if not exists recurring_costs (
id uuid primary key default gen_random_uuid(),
name text not null,
amount numeric not null,
category text default '',
type text default 'expense',
active boolean default true,
months integer[] default '{1,2,3,4,5,6,7,8,9,10,11,12}',
day_of_month integer,
created_at timestamptz default now()
);
alter table recurring_costs disable row level security;
create table if not exists monthly_budgets (
id uuid primary key default gen_random_uuid(),
year integer not null,
month integer not null,
category text not null,
budget_amount numeric not null,
created_at timestamptz default now(),
unique(year, month, category)
);
alter table monthly_budgets disable row level security;
create table if not exists categories (
id uuid primary key default gen_random_uuid(),
module text not null,
name text not null,
icon text default '📁',
color text default '',
created_at timestamptz default now()
);
alter table categories disable row level security;
-- Recepten (voeg toe als je de receptenmodule wil gebruiken)
create table if not exists recipes (
id uuid primary key default gen_random_uuid(),
title text not null,
category text default '',
description text default '',
prep_time integer,
cook_time integer,
base_servings integer default 4,
image_url text,
source_url text,
tags text default '',
rating integer default 0,
notes text default '',
created_at timestamptz default now()
);
alter table recipes disable row level security;
create table if not exists recipe_ingredients (
id uuid primary key default gen_random_uuid(),
recipe_id uuid references recipes(id) on delete cascade,
name text not null,
amount numeric,
unit text default '',
sort_order integer default 0
);
alter table recipe_ingredients disable row level security;
create table if not exists recipe_steps (
id uuid primary key default gen_random_uuid(),
recipe_id uuid references recipes(id) on delete cascade,
step_number integer not null,
instruction text not null
);
alter table recipe_steps disable row level security;
Mijn Persoonlijke Hub
Aanmelden
Voer je e-mailadres en wachtwoord in om toegang te krijgen.
Mijn Persoonlijke Hub
Eerste setup
Nog geen gebruikers gevonden. Maak het eerste admin-account aan.
Mijn Hub
Controleren…
Mijn widgets
🏠
Klik op "Widgets beheren" om je startpagina in te stellen.
Huishoudbudget
Inkomsten, uitgaven & vaste lasten per maand
Inkomsten
€0
Uitgaven
€0
Vaste Lasten
€0
Saldo
€0
Transactie toevoegen
Overzicht
🔍
Laden…
Terugkerende kost / inkomst toevoegen
Van toepassing in maanden
Terugkerende kosten
Jaarlijks totaal: €0
Laden…
Budget vs. Werkelijk
Budget instellen per categorie
Films & Series
Jouw kijklijst — films, series en tv-programma's
🔍
Laden…
🎬
✏ Poster
Samenvatting
Bekeken seizoenen
Mijn notities
Details bewerken
Leeslijst
Zoek boeken via Open Library en beheer je leeslijst
🤖 Anthropic API Key (voor Standaard Boekhandel widget)
Gratis API key via console.anthropic.com → API Keys → Create Key ⚠ Gebruik enkel een key met beperkte rechten / klein budget.
💡 Nieuwe modules (Recepten, Films, Terugkerende kosten)
Als je deze modules voor het eerst gebruikt, voer dan éénmalig het SQL uit dat in het setup-scherm staat. Ga naar: → het SQL-setup scherm verschijnt als de tabellen nog niet bestaan.
Let op: Als je de URL of key wijzigt, wordt je uitgelogd en moet je opnieuw aanmelden.
Mijn account
—
—
Wachtwoord wijzigen
Categorieën beheren
Definieer categorieën per module. Klik op het emoji-vakje om een icoontje te kiezen.