Een database, inloggen, bestandsopslag en een API waar je automations op kunnen draaien, in een half uur opgezet. Van account tot werkende sleutel, met de plekken erbij waar het misgaat.
10 minuten · wat technische kennis handig, niet nodig
Bijna elke automation die wij bouwen heeft ergens een plek nodig waar gegevens blijven staan: de leads uit een formulier, de uitslagen van een scan, de voorraadstanden van gisteren, de antwoorden van een AI-agent. Een Google Sheet redt het tot een paar duizend regels, daarna niet meer.
Supabase is die plek. Het is een gewone PostgreSQL-database met een dashboard eromheen, en met alles wat je normaal zelf zou moeten bouwen er al bij: inloggen, bestandsopslag, een API die vanzelf meegroeit met je tabellen, en kleine stukjes servercode. Je hoeft geen server te beheren, je hoeft geen database te installeren, en je zit niet vast: onderaan draait gewoon Postgres, dus je kunt er altijd mee weg.
Waarom wij het gebruiken. Een klantportaal, een dashboard of een automation die iets moet onthouden, staat bij ons meestal op Supabase. Niet omdat het het populairst is, maar omdat het in een middag staat en omdat de database van de klant zelf blijft: één export en alles staat ergens anders. Precies om die reden raden we het ook aan als je het zelf bouwt.
Supabase is geen database met wat extra’s; het zijn zes bouwstenen die je los kunt gebruiken. Je hoeft ze niet allemaal aan te zetten.
| Bouwsteen | Wat het is | Waar wij het voor inzetten |
|---|---|---|
| Database | PostgreSQL, met een tabelweergave in de browser en een SQL-venster | Leads, orders, voorraadstanden, meetreeksen: alles wat je later wilt filteren of optellen |
| API | Elke tabel is meteen als REST- en GraphQL-adres beschikbaar, zonder dat je iets bouwt | Een automation die een rij wegschrijft of ophaalt, zonder tussenlaag |
| Auth | Inloggen met e-mail, magic link, Google of Microsoft, inclusief wachtwoordherstel | Klantportalen: iedere klant ziet alleen zijn eigen cijfers |
| Storage | Bestandsopslag met dezelfde rechten als je tabellen | Productfoto’s, gegenereerd beeld, PDF-rapportages, facturen |
| Edge Functions | Kleine stukjes servercode die op een adres draaien | Een webhook opvangen, een berekening doen die niet in de browser hoort |
| Realtime en vector | Wijzigingen die live doorkomen, en zoeken op betekenis in plaats van op woorden | Een dashboard dat vanzelf bijwerkt; een AI-agent die je eigen documenten kan raadplegen |
De combinatie is wat het bruikbaar maakt. Een scan die een uitslag opslaat, een portaal waar de klant die uitslag terugziet, en een agent die op basis van diezelfde gegevens advies geeft: dat zijn drie dingen op één fundament, niet drie losse systemen.
Beginnen is gratis, en dat is geen proefperiode maar een plan dat blijft bestaan. De grenzen op het gratis plan, stand augustus 2026:
Let op de pauzeknop. Een gratis project dat een week lang geen enkele aanroep krijgt, wordt automatisch gepauzeerd. Je gegevens blijven staan, maar het project is offline tot je het met de hand weer aanzet. Voor proberen is dat prima; voor iets waar een klant op wacht, niet. Draait het echt, neem dan het betaalde plan.
Kloppen deze getallen nog? Controleer ze op supabase.com/pricing, want prijzen en grenzen bewegen.
supabase.com
Ga naar supabase.com en klik op Start your project. Je meldt je aan met GitHub of met een e-mailadres. Heb je GitHub, kies dat: je hebt het later toch nodig zodra je code gaat uitrollen, en het scheelt een wachtwoord.
Dashboard → New organization
Een organisatie is de map waar je projecten en je facturatie in zitten. Geef hem de naam van je bedrijf, niet je eigen naam: collega’s uitnodigen gaat per organisatie, en je wilt dat later niet omzetten.
Dashboard → New project
Drie dingen die je hier invult en die je niet zomaar terugdraait:
Het opzetten duurt een minuut of twee. Daarna sta je in het dashboard van je project.
Dit is het deel waar het misgaat, dus lees het even goed. Supabase geeft je twee soorten sleutels, en het verschil is niet technisch maar praktisch: de ene mag iedereen zien, de andere niemand.
Project → Settings → API Keys
| Sleutel | Herken je aan | Waar hij hoort |
|---|---|---|
| Publishable | sb_publishable_… |
In je website, je app, je JavaScript. Mag gewoon zichtbaar zijn; wat iemand ermee kan, bepaal jij met de rechten op je tabellen (zie de volgende stap). |
| Secret | sb_secret_… |
Alleen op een server, in een Edge Function of in een automation. Deze sleutel gaat langs alle rechten heen en mag álles. |
Zie je in plaats daarvan anon en service_role staan, in de vorm van lange JWT-strings? Dan kijk je naar de vorige generatie sleutels. Ze doen hetzelfde: anon hoort bij publishable, service_role bij secret. Nieuwe projecten krijgen de nieuwe soort.
De secret-sleutel hoort nooit in een browser. Niet in je frontend, niet in een JavaScript-bestand, niet in een openbare repository. Hij negeert alle regels die je hebt ingesteld: wie hem heeft, kan elke rij in je database lezen, wijzigen en verwijderen. Is hij toch ergens beland waar hij niet hoort, draai hem dan meteen om in ditzelfde scherm.
Project → Table Editor → per tabel
Row Level Security (RLS) bepaalt per rij wie wat mag. Zonder RLS is een tabel met de publishable-sleutel voor iedereen leesbaar, en die sleutel staat in je website. Dat is niet een instelling die je vergeet, dat is de instelling.
De volgorde die wij aanhouden: RLS aan bij het aanmaken van elke tabel, daarna pas regels toevoegen voor wat wél mag. Bijvoorbeeld: een ingelogde gebruiker mag alleen de rijen zien waar zijn eigen id in staat. Supabase waarschuwt in het dashboard als een tabel openstaat; neem die waarschuwing serieus.
Account → Access Tokens
Naast de sleutels van een project bestaat er een token voor jóu: een personal access token. Die heb je nodig zodra je iets buiten het dashboard om doet, bijvoorbeeld met de Supabase CLI, met de Management API of vanuit een AI-assistent die je projecten mag beheren.
Je maakt hem aan op supabase.com/dashboard/account/tokens. Geef hem een naam waaraan je later ziet waar hij voor is, bijvoorbeeld cli-laptop-job.
Deze token is jouw account. Hij heeft dezelfde rechten als jij: alle organisaties, alle projecten. Dus niet in een script dat op een server draait, en niet delen met een leverancier. Gebruik voor een automation een secret-sleutel van het project in kwestie; dan reikt de schade nooit verder dan dat ene project.
Maak in de tabelweergave een tabel test met één tekstkolom naam, zet er een rij in, en haal die op met de publishable-sleutel. In een terminal:
curl "https://JOUW-PROJECT.supabase.co/rest/v1/test?select=*" \
-H "apikey: sb_publishable_XXXX" \
-H "Authorization: Bearer sb_publishable_XXXX"
Krijg je je rij terug, dan staat alles. Krijg je een lege lijst terwijl er wel een rij in staat, dan doet RLS zijn werk en heb je nog geen regel die het lezen toestaat. Krijg je een foutmelding over de sleutel, dan staat het adres van je project verkeerd: dat vind je in hetzelfde scherm als de sleutels.
| Plek | Publishable | Secret | Personal access token |
|---|---|---|---|
| Website of app | Ja | Nooit | Nooit |
| Server, Edge Function of automation | Mag | Ja, als omgevingsvariabele | Nee |
| Je eigen laptop (CLI) | Mag | Liever niet | Ja |
| Git-repository | Mag | Nooit | Nooit |
De regel die je onthoudt: alles wat met sb_secret_ of met een persoonlijke token begint, staat in een omgevingsvariabele en nergens anders.
Een PostgreSQL-database in de cloud, met een dashboard en een aantal ingebouwde onderdelen eromheen: inloggen, bestandsopslag, een automatisch gegenereerde API en kleine stukjes servercode. Je krijgt de bouwstenen van een applicatie zonder dat je een server beheert.
Er is een gratis plan met 500 MB database, 1 GB opslag en twee projecten, en dat blijft gratis. De belangrijkste beperking is niet de omvang maar de pauze: een project dat een week stil ligt, wordt uitgezet tot je het weer aanzet.
De publishable-sleutel mag iedereen zien en is bedoeld voor je website of app; wat er dan mag, bepaal je met Row Level Security. De secret-sleutel gaat langs die regels heen en hoort alleen op een server te staan. In oudere projecten heten ze anon en service_role.
Onder je account, bij Access Tokens, niet bij een project. Zo’n personal access token heeft dezelfde rechten als jijzelf, dus gebruik hem alleen lokaal en nooit in een script dat ergens draait.
Ja, en dat is een van de redenen dat wij het aanraden. Onderaan draait standaard PostgreSQL: je maakt een dump en zet die bij een andere partij of op je eigen server terug. Wat je opnieuw moet inrichten zijn de onderdelen eromheen, zoals het inloggen en de opslag.
Ja. Elke tabel is meteen als API beschikbaar, dus een automation die uit je webshop, je marketplace of je ERP leest, kan er direct naartoe schrijven. Dat is precies waar wij het meestal voor gebruiken.
← Terug naar de kennisbank
In een vrijblijvend gesprek brengen we in kaart welke systemen jouw business nodig heeft.
Gratis 1-op-1 call met Job Lenselink