Wat Supabase is en waarom we het kiezen
Supabase biedt vijf diensten in één:
**1. PostgreSQL-database**: Volledig beheerde PostgreSQL — de meest gebruikte relationele database ter wereld. Geen propriëtair schema, geen lock-in.
**2. Authenticatie**: E-mail/wachtwoord, Google, GitHub, Apple SSO — volledig geconfigureerd met één instelling.
**3. Bestandsopslag**: S3-compatibele opslag met toegangscontrolebeleid.
**4. Edge Functions**: Deno-gebaseerde serverloze functies voor bedrijfslogica en API-proxying.
**5. Realtime**: WebSocket-gebaseerde live data-subscriptions.
Waarom we Supabase kiezen boven Firebase: je data staat in standaard PostgreSQL (exporteerbaar, SQL-querybaar, overal te hosten), het is open-source (zelf te hosten als nodig), en EU-west (Frankfurt) regio voor AVG-compliance.
Stap 1: Project aanmaken
Ga naar supabase.com en maak een gratis account aan.
Klik "New project" en vul in: - **Organisatienaam**: je bedrijf of projektnaam - **Projectnaam**: je app-naam - **Wachtwoord**: genereer een sterk wachtwoord (bewaar het — je hebt het nodig voor directe database-verbindingen) - **Regio**: Kies **West EU (Frankfurt)** — cruciaal voor AVG-compliance
Het project wordt aangemaakt in ~2 minuten.
Na aanmaken vind je in het dashboard: - **Project URL**: `https://[project-ref].supabase.co` — dit is je API-basis-URL - **Anon key**: Openbare sleutel voor clientside gebruik (veilig voor gebruik in WeWeb/FlutterFlow) - **Service role key**: Privésleutel met volledige toegang — NOOIT in je frontend gebruiken
Stap 2: Database ontwerpen
Ga naar "Table Editor" in het Supabase-dashboard.
Maak je eerste tabel aan. Voor een eenvoudige takenapp:
**Table: todos** - `id` — bigserial (automatisch ingesteld) - `user_id` — uuid, NOT NULL, foreign key naar auth.users.id - `title` — text, NOT NULL - `is_complete` — boolean, DEFAULT false - `created_at` — timestamptz, DEFAULT now()
Klik "Save". Je tabel is aangemaakt.
Altijd in SQL doen? Gebruik de SQL-editor: ```sql create table todos ( id bigserial primary key, user_id uuid not null references auth.users(id), title text not null, is_complete boolean default false, created_at timestamptz default now() ); ```
Voeg indexen toe op veelgebruikte filterkolommen: ```sql create index on todos (user_id); create index on todos (created_at desc); ```
Stap 3: Row-Level Security instellen
Activeer RLS voor je todos-tabel. In de Table Editor: klik op de tabel → "RLS" tabblad → "Enable RLS".
Maak nu policies aan. In SQL:
```sql -- RLS activeren alter table todos enable row level security;
-- Gebruikers kunnen alleen hun eigen todos lezen create policy "users_own_todos" on todos for select using (user_id = auth.uid());
-- Gebruikers kunnen alleen todos voor zichzelf aanmaken create policy "users_insert_own_todos" on todos for insert with check (user_id = auth.uid());
-- Gebruikers kunnen alleen hun eigen todos bijwerken create policy "users_update_own_todos" on todos for update using (user_id = auth.uid());
-- Gebruikers kunnen alleen hun eigen todos verwijderen create policy "users_delete_own_todos" on todos for delete using (user_id = auth.uid()); ```
Test je RLS: maak twee testgebruikers aan via het Authentication-dashboard en verifieer dat ze elkaars todos niet kunnen zien.
Stap 4: Authenticatie configureren
Ga naar "Authentication" → "Providers" in het dashboard.
**E-mail/wachtwoord**: Standaard ingeschakeld. Configureer: - "Confirm email": Aanbevolen voor productie. Vereist e-mailbevestiging voor nieuwe accounts. - "Min password length": Stel in op minimaal 8 tekens
**Google OAuth**: 1. Maak een Google Cloud-project aan en activeer OAuth 2.0 2. Voeg `https://[project-ref].supabase.co/auth/v1/callback` toe als geautoriseerde redirect-URI 3. Plak client ID en secret in Supabase's Google-provider-instellingen 4. Schakel de Google-provider in
**E-mailsjablonen aanpassen**: Ga naar Authentication → Email Templates. Pas de welkomstmail en wachtwoord-reset-mail aan in het Nederlands voor een professionele uitstraling bij Nederlandse gebruikers.
Voor AVG: schakel "Leak protection" in (scant wachtwoorden via HaveIBeenPwned) en configureer een aangepaste SMTP-provider (zoals Brevo) zodat e-mails van je eigen domein komen.
Stap 5: Verbinden met WeWeb of FlutterFlow
**WeWeb**: 1. Voeg de Supabase-plugin toe in WeWeb 2. Plak je Project URL en Anon Key 3. Je tabellen zijn nu beschikbaar als databronnen in WeWeb-elementen 4. Gebruik "Collections" om Supabase-query's te definiëren die gebonden kunnen worden aan UI-componenten
**FlutterFlow**: 1. Ga naar Settings → Supabase in FlutterFlow 2. Plak je Project URL en Anon Key 3. FlutterFlow importeert automatisch je tabelschema 4. Gebruik de Supabase Query-actie in je FlutterFlow-widgets om data op te halen
Tip: test altijd je verbinding met een eenvoudige SELECT-query voordat je complex databinding opzet. Voeg een testgebruiker toe, log in via Supabase Auth, en verifieer dat de RLS-policies werken zoals verwacht.