Directus vs Supabase in 2026: Het juiste backend kiezen
Ik heb projecten op zowel Directus als Supabase in productie opgezet in de afgelopen drie jaar. Elke keer wanneer iemand mij vraagt "welke moet ik kiezen?", is mijn antwoord hetzelfde: het hangt af van wat je eigenlijk bouwt. Dit is geen ontwijking -- deze twee tools vervullen echt verschillende primaire doeleinden, hoewel ze op verrassende manieren overlappen. Directus is een headless CMS dat elke SQL-database in een mooie admin UI en REST/GraphQL API omwikkelt. Supabase is een Firebase-alternatief gebouwd op PostgreSQL dat je authenticatie, realtime subscriptions, opslag en edge functions biedt. De overlap? Beide geven je een database, beide geven je een API, en beide hebben een dashboard voor gegevensbeheer. Maar de filosofie achter elk is fundamenteel anders, en die filosofie bepaalt elke beslissing die je later zult nemen.
Laat me je laten zien wat ik heb geleerd door met beide in productie te bouwen.
Inhoudsopgave
- Filosofie en kernidentiteit
- Database en gegevensmodellering
- API-laagvergelijking
- Ervaringen met contentbeheer
- Authenticatie en autorisatie
- Realtime-mogelijkheden
- Self-hosting en infrastructuur
- Prijsbreuk 2026
- Ontwikkelaarservaring
- Wanneer elk gebruiken
- Veelgestelde vragen

Filosofie en kernidentiteit
Directus noemt zichzelf een "gegevensplatform" maar laten we eerlijk zijn -- het is in de kern een headless CMS. Het omwikkelt je bestaande SQL-database (PostgreSQL, MySQL, MariaDB, MS SQL, SQLite, Oracle, CockroachDB) met een contentbeheerinterface. Het cruciale inzicht: Directus is niet de eigenaar van je gegevensschema. Je kunt het naar een bestaande database laten wijzen en het zal de tabellen en relaties automatisch introspecteer. Dat is krachtig als je al een database hebt en een beheerslaag nodig hebt.
Supabase is een Backend-as-a-Service (BaaS). Het is PostgreSQL met alles erbij: authenticatie, bestandsopslag, realtime subscriptions, edge functions en vector embeddings voor AI-workloads. Supabase gaat ervan uit dat je een applicatie bouwt, niet inhoud beheert. Het dashboard is ontworpen voor ontwikkelaars, niet voor contentredacteuren.
Dit filosofische verschil is belangrijker dan elke functievergelijking. Als je een inhoudgestuurd website bouwt waarbij redacteuren blogberichten moeten publiceren, media moeten beheren en wijzigingen moeten kunnen voorvertonen -- Directus is speciaal voor dat doel gemaakt. Als je een SaaS-app bouwt waar gebruikers zich aanmelden, gegevens opslaan en in realtime interactie hebben -- Directus is voor dat doel gemaakt -- Supabase is voor dat doel gemaakt.
Maar de meeste echte projecten zijn niet zo schoon ingedeeld. En dat is waar het interessant wordt.
Database en gegevensmodellering
Directus
Directus gebruikt een "database-first"-benadering. Je definieert je schema via de Directus UI of rechtstreeks in je database -- beide werken. De admin-app genereert automatisch formulieren, relaties en validatie op basis van je schema. Wil je een many-to-many-relatie tussen articles en tags? Maak de junctie-tabel aan (of laat Directus deze maken), en de admin UI geeft automatisch een fijne tag-selector weer.
Wat ik waardeer: Directus maakt geen eigen abstractielaag over je tabellen. Je tabelnamen, kolomnamen en relaties zijn exact wat je hebt gedefinieerd. De systeemtabellen (voorafgegaan door directus_) staan naast je gegevens maar bemoeien zich er niet mee.
Ondersteunde databases in 2026:
- PostgreSQL 12+
- MySQL 8+
- MariaDB 10.5+
- MS SQL 2019+
- SQLite 3+
- CockroachDB 22+
- Oracle 19c+
Supabase
Supabase is PostgreSQL. Punt. Je krijgt een volledig Postgres-exemplaar met extensies zoals PostGIS, pgvector, pg_cron en honderden anderen. Schemabeheer gebeurt via de SQL-editor van het dashboard, hun tabel-editor UI of migraties via de Supabase CLI.
De migratiewerkstroom in Supabase is aanzienlijk gerijpt. De CLI genereert migratiebestanden, en je kunt supabase db diff gebruiken om schemawijzigingen vast te leggen die via het dashboard zijn aangebracht. In 2026 hebben ze ook vertakkingen toegevoegd -- databasevertakkingen waarmee je schemawijzigingen in isolatie kunt testen voordat je deze in productie plaatst.
-- Supabase migratievoorbeeld
create table public.articles (
id uuid default gen_random_uuid() primary key,
title text not null,
slug text unique not null,
content jsonb,
published_at timestamptz,
author_id uuid references auth.users(id),
created_at timestamptz default now()
);
alter table public.articles enable row level security;
create policy "Published articles are viewable by everyone"
on public.articles for select
using (published_at is not null and published_at <= now());
Het Row Level Security (RLS) model is zowel Supabase's superster als zijn steilste leercurve. Meer hierover later.
| Functie | Directus | Supabase |
|---|---|---|
| Database-engine | PostgreSQL, MySQL, MariaDB, MS SQL, SQLite, CockroachDB, Oracle | Alleen PostgreSQL |
| Schemabeheer | GUI + rechtstreeks SQL | GUI + SQL-editor + CLI-migraties |
| Databasevertakkingen | Niet ingebouwd (gebruik afzonderlijke exemplaren) | Ja (ingebouwd, sinds eind 2024) |
| Extensies | Hangt af van gekozen database | 60+ Postgres-extensies |
| Vector/AI-ondersteuning | Via extensies | pgvector ingebouwd |
| Directe databasetoegang | Volledige toegang altijd | Volledige toegang altijd |
API-laagvergelijking
Directus-API's
Directus genereert automatisch REST en GraphQL API's op basis van je schema. De REST-API volgt een voorspelbaar patroon:
# Haal alle artikelen op met auteurrelatie
GET /items/articles?fields=*,author.name&filter[status][_eq]=published&sort=-published_at&limit=10
Het filtersysteem is expressief. Je kunt geneste relationele filters, aggregatie en zelfs geografische query's doen. De SDK omwikkelt dit allemaal mooi:
import { createDirectus, rest, readItems } from '@directus/sdk';
const client = createDirectus('https://your-instance.com').with(rest());
const articles = await client.request(
readItems('articles', {
fields: ['*', { author: ['name', 'avatar'] }],
filter: { status: { _eq: 'published' } },
sort: ['-published_at'],
limit: 10,
})
);
De TypeScript SDK in Directus 11 (stabiel op dit moment in 2026) is veel beter geworden in type-inferentie, hoewel je nog steeds typen uit je schema moet genereren voor volledige typeveiligheid.
Supabase-API's
Supabase genereert een REST-API via PostgREST en biedt een JavaScript-clientbibliotheek die meer op een ORM lijkt:
import { createClient } from '@supabase/supabase-js';
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY);
const { data: articles, error } = await supabase
.from('articles')
.select('*, author:profiles(name, avatar_url)')
.eq('status', 'published')
.order('published_at', { ascending: false })
.limit(10);
Supabase biedt niet standaard GraphQL. Ze hadden pg_graphql voor een tijd, en het is nog steeds beschikbaar als extensie, maar de primaire DX is hun JS-client en de REST-API. Eerlijk gezegd? Ik mis GraphQL niet als ik Supabase gebruik. De select-syntaxis met relatiejoin dekt 95% van de use cases.
Één gebied waar Supabase vooruitloopt: realtime subscriptions via WebSockets en edge functions voor server-side logica. Directus heeft Flows (hun automatiseringsmotor), maar het is niet hetzelfde als een volledige serverloze functie-runtime.

Ervaringen met contentbeheer
Dit is waar Directus absoluut domineert. Het is niet eens dicht.
De admin-app van Directus is ontworpen voor contentteams. Je krijgt:
- Aangepaste layouts: kanban-borden, kalenders, kaarten, split views voor collectiebrowsing
- WYSIWYG en blokeditors: De blokeditor in Directus 11 is echt goed
- Vertaalondersteuning: Ingebouwde i18n met side-by-side vertaalinterfaces
- Revisiegeschiedenis: Volledige contentversioning met diffweergaven
- Livevoorvertoning: Configureer preview-URL's zodat redacteuren wijzigingen voor publicatie kunnen zien
- Granulaire machtigingen: Op rollen gebaseerde toegang tot individuele velden
- Aangepaste dashboards: Analyse- en overzichtspanelen voor contentteams
De tabel-editor van Supabase is... een tabel-editor. Het is geweldig voor ontwikkelaars die een GUI voor hun database willen. Het is verschrikkelijk voor een marketingteam dat een homepage-heldengedeelte moet bijwerken. Als je een inhoudgestuurd website bouwt en je redacteuren zullen rechtstreeks contact hebben met de backend, wint Directus standaard.
Ik heb teams zien proberen een aangepaste admin UI bovenop Supabase voor contentbewerking. Het werkt, maar je bouwt in feite een CMS van nul. Dat is maanden werk dat Directus je op dag één geeft.
Als je op zoek bent naar een goed headless CMS-setup voor je website, werkt ons team regelmatig met Directus in headless CMS-projecten -- het is een van onze topkeuzes voor inhoudszware sites.
Authenticatie en autorisatie
Supabase Auth
Supabase Auth is een volledig uitgerust authenticatiesysteem. E-mailadres/wachtwoord, magische koppelingen, OAuth (Google, GitHub, Apple, enz.), telefoon/SMS en SAML SSO zijn allemaal ingebouwd. Het integreert rechtstreeks met PostgreSQL's Row Level Security, wat betekent dat je auth-regels in de database zelf leven.
-- Alleen gebruikers toestaan hun eigen profielen te lezen
create policy "Users can view own profile"
on profiles for select
using (auth.uid() = id);
-- Gebruikers toestaan hun eigen profiel bij te werken
create policy "Users can update own profile"
on profiles for update
using (auth.uid() = id);
Dit model is elegant zodra je het begrijpt, maar RLS-beleid kan snel ingewikkeld worden. Foutopsporing waarom een query lege resultaten geeft omdat een beleid ontbreekt, is een van die vreugden die je leert te accepteren.
Directus Auth
Directus verzorgt authenticatie voor zijn eigen admin-gebruikers en ondersteunt ook externe SSO via OpenID Connect, SAML, LDAP en OAuth2. Voor front-end app-gebruikers zou je doorgaans het gebruikerssysteem van Directus met aangepaste rollen gebruiken.
Het machtigingsmodel in Directus is op GUI gebaseerd. Je maakt rollen aan en configureert voor elke rol CRUD-machtigingen per collectie, optioneel met veld-niveau en item-niveau regels. Het is visueler en naar mijn mening gemakkelijker te begrijpen dan RLS-beleid, maar minder flexibel voor complexe applicatielogica.
Voor applicaties waarbij eindgebruikerauth het primaire aandachtspunt is (denk aan SaaS-apps), is het auth-systeem van Supabase aanzienlijk beter ontwikkeld. Voor het beheren van toegang voor contentteams is Supabase's auth-systeem aanzienlijk beter ontwikkeld. Voor het beheren van toegang voor contentteams is het rolsysteem van Directus beter geschikt.
Realtime-mogelijkheden
De realtime-engine van Supabase is productieklaar en handelt aanwezigheid, uitzending en luisteraars voor databasewijzigingen af:
const channel = supabase
.channel('articles')
.on('postgres_changes', {
event: 'INSERT',
schema: 'public',
table: 'articles',
}, (payload) => {
console.log('New article:', payload.new);
})
.subscribe();
Dit is echt nuttig voor chat-apps, samenwerkingstools, live dashboards en notificatiesystemen.
Directus voegde WebSocket-ondersteuning toe en heeft realtime subscriptions via hun GraphQL subscription-eindpunt. Het werkt, maar het is niet hetzelfde niveau van rijpheid. Directus Realtime is prima voor "waarschuw me wanneer inhoud verandert" scenario's, maar is niet gebouwd voor high-frequency samenwerkingstoepassingen.
Self-hosting en infrastructuur
Beide tools zijn open source en kunnen zelf gehost worden.
Directus is een Node.js-applicatie gedistribueerd als npm-pakket en Docker-afbeelding. Self-hosting is eenvoudig -- wijs het naar je database, configureer omgevingsvariabelen, en je voert uit. Ik heb het op Railway, Fly.io, AWS ECS en plain VPS-exemplaren zonder problemen geïmplementeerd.
Supabase self-hosting is meer betrokken. De volledige stack omvat PostgreSQL, PostgREST, GoTrue (auth), Realtime, Storage, Kong (API-gateway) en het Studio-dashboard. Hun Docker Compose-setup werkt voor ontwikkeling, maar productie self-hosting vereist meer operationele kennis. De meeste teams kiezen voor Supabase's gehoste platform en sparen zichzelf de operationele overhead.
| Aspect | Directus Self-Hosted | Supabase Self-Hosted |
|---|---|---|
| Complexiteit | Laag-gemiddeld (enkele Node.js-app + database) | Hoog (7+ services) |
| Docker-ondersteuning | Officiële afbeelding, eenvoudig | Docker Compose, complex |
| Min-resources | 1 vCPU, 1GB RAM | 4 vCPU, 8GB RAM (alle services) |
| Community-handleidingen | Uitgebreid | Groeiend maar minder rijp |
| Beheerde alternatief | Directus Cloud | Supabase Platform |
Prijsbreuk 2026
Laten we het over geld hebben. Dit zijn huidige gepubliceerde prijzen vanaf begin 2026.
Directus Cloud
| Plan | Prijs | Inbegrepen |
|---|---|---|
| Community (self-hosted) | Gratis | Alles, zelf beheerd |
| Standard | €99/mnd | 1 project, 100K API-requests, 5GB assets |
| Professional | €399/mnd | Aangepast domein, meer resources, prioriteitsondersteuning |
| Enterprise | Aangepast | SSO, SLA, specifieke infra |
Supabase Platform
| Plan | Prijs | Inbegrepen |
|---|---|---|
| Gratis | $0 | 500MB database, 1GB opslag, 50K auth-gebruikers, 500K edge function-aanroepen |
| Pro | $25/mnd | 8GB database, 100GB opslag, 100K auth-gebruikers, 2M edge function-aanroepen |
| Team | $599/mnd | Prioriteitsondersteuning, SOC2, dagelijkse backups, 28-dagen logbewaring |
| Enterprise | Aangepast | SLA, specifieke ondersteuning, aangepaste contracten |
Het prijsverschil is schrikbarend. De gratis laag van Supabase is echt bruikbaar voor bijprojecten en MVP's. Het startpunt van Directus Cloud op $99/maand is steil voor experimentatie -- maar self-hosting van Directus op een $5/maand VPS werkt perfect voor kleine projecten.
Voor een startup die een app bouwt, geeft Supabase's $25/maand Pro-plan je veel. Voor een bedrijf dat een inhoudszware website uitvoert, zouden Directus self-hosted plus een beheerde PostgreSQL-exemplaar $20-50/maand kosten.
Ontwikkelaarservaring
Ik bouw veel Next.js-projecten en Astro-sites, dus framework-integratie is erg belangrijk voor mij.
Directus DX
- TypeScript SDK is goed, verbetert met elke release
- Schematypen kunnen uit je exemplaar worden gegenereerd
- Extensiesysteem voor aangepaste eindpunten, hooks, panelen en interfaces
- Flows (visuele automatisering) kunnen eenvoudige backend-logica vervangen
- De admin-app is aanpasbaar met aangepaste modules en layouts
- Afbeeldingstransformaties ingebouwd in de asset-delivery API
Supabase DX
- TypeScript-typen automatisch gegenereerd uit je schema (
supabase gen types typescript) - Lokale ontwikkeling met
supabase start(voert alles uit in Docker) - Edge Functions (op Deno gebaseerd) voor server-side logica
- Ingebouwde vectorzoeking met pgvector voor AI-functies
- CLI-gestuurde werkstroom met migraties, vertakkingen en CI/CD
- Vercel/Netlify-integratie voor env-variabelen synchronisatie
Beide hebben solide documentatie. De documentatie van Supabase is bijzonder goed georganiseerd met framework-specifieke handleidingen (Next.js, Nuxt, SvelteKit, Flutter, enz.). De documentatie van Directus is grondig maar loopt soms achter op de laatste SDK-wijzigingen.
Wanneer elk gebruiken
Na uitgebreid met beide te hebben gebouwd, volgt mijn besluitvormingskader:
Kies Directus wanneer:
- Contentredacteuren hebben een verzorgde admin-interface nodig
- Je een marketingsite, blog of redactioneel platform bouwt
- Je meertalige contentbeheer nodig hebt
- Je bestaande database een beheer-UI nodig heeft
- Contentworkflows (concepten, reviews, goedkeuringen) zijn belangrijk
- Je MySQL, MariaDB of een ander niet-PostgreSQL-database wilt gebruiken
Kies Supabase wanneer:
- Je een gebruikersgerichte applicatie bouwt (SaaS, marktplaats, social)
- Je authenticatie en gebruikersbeheer nodig hebt
- Realtime-functies zijn een kernvereiste
- Je edge functions voor server-side logica wilt
- AI/vectorzoeking staat op je roadmap
- Je het snelste pad van idee tot geïmplementeerde app wilt
Gebruik beide wanneer:
Dit is niet gek. Ik heb systemen gebouwd waar Supabase gebruikerauth, app-gegevens en realtime-functies verhandelt, terwijl Directus de website-inhoud, blog en documentatie beheert. Ze kunnen dezelfde PostgreSQL-exemplaar delen of afzonderlijke databases gebruiken. De scheiding van verantwoordelijkheden maakt de architectuur eigenlijk schoner.
Als je probeert de juiste backend-architectuur voor je project te bepalen, dat is letterlijk wat ons team doet -- aarzel niet om contact op te nemen en je specifieke situatie door te nemen.
Veelgestelde vragen
Kan Directus Supabase als backend voor web-apps vervangen? Gedeeltelijk. Directus geeft je een database-API en gebruikersbeheer, dus voor eenvoudige CRUD-apps kan het werken. Maar je zult het ingebouwde auth-systeem van Supabase, realtime subscriptions, edge functions en bestandsopslagservice missen. Directus is geoptimaliseerd voor contentbeheer, niet voor workloads voor toepassingsbackend. Voor een eenvoudige app met vooral contentoperaties werkt Directus prima. Voor alles met gebruikersauthentificatieflows, realtime-functies of complexe server-side logica, wil je Supabase of een soortgelijke BaaS.
Is Supabase goed als headless CMS? Het kan als zodanig functioneren, maar vereist aanzienlijk maatwerk. Je moet je eigen admin-interface voor contentredacteuren bouwen, afbeeldingstransformaties afzonderlijk verhandelen, contentversioning handmatig implementeren en je eigen voorvertoningsysteem maken. Teams hebben dit gedaan met tools als Supabase + aangepaste React admin-panelen, maar je reïnventeert wat Directus (of Strapi, of Payload) je uit het vak geeft. Als contentbeheer je primaire behoefte is, gebruik je een specifieke headless CMS.
Welke is beter voor een Next.js-applicatie?
Beide integreren goed met Next.js. Supabase heeft officiële Next.js-helpers (@supabase/ssr) die auth-cookie-beheer in servercomponenten en middleware verhandelen. Directus werkt ook prima met Next.js -- je haalt gegevens via de SDK in servercomponenten op en gebruikt ISR of SSG voor prestaties. Voor een marketingsite met een blog zou ik Next.js met Directus koppelen. Voor een SaaS-app met gebruikersaccounts, Next.js met Supabase. We behandelen dit in detail in onze Next.js-ontwikkelingspraktijk.
Kan ik zowel Directus als Supabase gratis zelf hosten? Ja. Beide zijn open source met permissieve licenties (Directus gebruikt een BSL 1.1-licentie die na 3 jaar naar Apache 2.0 converteert; Supabase gebruikt Apache 2.0 voor de meeste componenten). Directus is gemakkelijker zelf te hosten -- het is een enkele Node.js-app. Supabase self-hosting vereist het uitvoeren van meerdere services (PostgreSQL, PostgREST, GoTrue, Realtime, Storage, Kong). Voor Supabase kiezen de meeste ontwikkelaars voor het gehoste platform en besparen zichzelf de operationele overhead.
Hoe gaan Directus en Supabase met bestandsopslag en media om? Directus heeft een ingebouwd assetbeheersysteem met afbeeldingstransformaties op het moment zelf (schalen, bijsnijden, formaatconversie). Je uploadt bestanden via de admin UI of API en vraagt getransformeerde versies via URL-parameters aan. Supabase Storage is een S3-compatibele bestandsopslagservice met op RLS gebaseerde toegangscontrole. Het verhandelt uploads en downloads goed, maar heeft geen ingebouwde afbeeldingstransformaties -- je zou het met een service als Imgix, Cloudinary of Supabase's eigen afbeeldingstransformatie koppelen (wat in 2025 als bèta is gelanceerd).
Wat te zeggen van prestaties en schaalbaarheid? De infrastructuur van Supabase is gebouwd op AWS met verbindingspoling via Supavisor en kan aanzienlijk verkeer verhandelen. Hun Pro-plan databases kunnen worden opgeschaald naar 64GB RAM-exemplaren. Directus-prestaties hangen sterk af van je hosting-setup en database. Met correct caching (Redis, CDN) verhandelt Directus veel verkeer goed, maar je bent verantwoordelijk voor de infrastructuur. In benchmarks kunnen beide duizenden verzoeken per seconde verhandelen met passende resources. Het knelpunt is vrijwel altijd de database, niet de API-laag.
Is Directus of Supabase beter voor een team met niet-technische leden? Directus, zonder twijfel. De admin-interface is ontworpen voor niet-ontwikkelaars. Je kunt aangepaste dashboards maken, content-goedkeuringswerkflows opzetten en toegang beperken op basis van rol -- allemaal zonder code te schrijven. Het dashboard van Supabase is een ontwikkelaarstool. Je marketingteam gaat niet voor een landingstoepassing SQL schrijven. Als niet-technische teamleden gegevens moeten beheren, is de UI van Directus de juiste keuze.
Kan ik later van de ene naar de ander migreren? Aangezien beide PostgreSQL-compatibel zijn (en Directus aanvullende databases ondersteunt), is migratie haalbaar maar niet triviaal. Als je op Directus met PostgreSQL bent en Supabase wilt toevoegen, je kon je bestaande database naar Supabase laten wijzen of de gegevens migreren. De systeemtabellen van Directus en het auth-schema van Supabase moeten naast elkaar bestaan of worden gescheiden. In de tegengestelde richting -- Directus bovenop een Supabase-database toevoegen -- is eigenlijk een goed gedocumenteerd patroon. Directus kan bestaande tabellen introspecteer en zijn beheerlaag creëren zonder je gegevensschema te wijzigen.