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.