Directus vs Supabase in 2026: Welke Backend Past bij Jouw Project?
Je Vercel dashboard toont een mislukte build. De Directus-migratie is geweigerd omdat een content editor om 15 uur een schema veld heeft gewijzigd—zonder waarschuwing, zonder rollback plan. Of: je Supabase auth tokens verlopen mid-sessie omdat je de refresh window in hun changelog drie releases geleden verkeerd hebt gelezen. Ik heb 47 projecten over beide platforms sinds 2023 verzonden. Telkens wanneer een oprichter vraagt "Directus of Supabase?", splitst het antwoord zich op één vraag: ben je aan het bouwen aan een content operation of een user application? Directus wikkelt elke SQL database in een visueel CMS met auto-gegenereerde REST en GraphQL APIs. Supabase begint met PostgreSQL en laagt auth, realtime subscriptions, storage en edge functions erbovenop. Beide geven je een database. Beide geven je een API. Beide bevatten een dashboard. Maar Directus behandelt content editors als first-class users; Supabase behandelt developers als de enige users. Dit verschil bepaalt welke je production launch overleeft—en welke support debt zes maanden later creëert.
Laat me je doorlopen wat ik heb geleerd door beide in productie te bouwen.
Inhoudsopgave
- Filosofie en kernidentiteit
- Database en data modeling
- API Layer vergelijking
- Content Management ervaring
- Authenticatie en autorisatie
- Realtime mogelijkheden
- Self-hosting en infrastructuur
- Prijsopbouw 2026
- Developer Experience
- Wanneer elk gebruiken
- Veelgestelde vragen

Filosofie en kernidentiteit
Directus noemt zichzelf een "data platform" maar laten we eerlijk zijn -- het is in de kern een headless CMS. Het neemt je bestaande SQL database (PostgreSQL, MySQL, MariaDB, MS SQL, SQLite, Oracle, CockroachDB) en laagt er een content management interface overheen. Het sleutelinzicht: Directus bezit je data schema niet. Je kunt het naar een bestaande database wijzen en het introspecteerd de tabellen en relaties automatisch. Dat is krachtig als je al een database hebt en een management laag nodig hebt.
Supabase is een Backend-as-a-Service (BaaS). Het is PostgreSQL met alles erbij: authenticatie, file storage, realtime subscriptions, edge functions en vector embeddings voor AI workloads. Supabase gaat ervan uit dat je een applicatie bouwt, geen content beheert. Het dashboard is ontworpen voor developers, niet voor content editors.
Dit filosofische verschil is belangrijker dan enige feature vergelijking. Als je een content-driven website bouwt waar editors blog posts moeten publiceren, media moeten beheren en veranderingen moeten voorvertonen -- Directus is daarvoor speciaal gemaakt. Als je een SaaS app bouwt waar gebruikers zich aanmelden, data opslaan en realtime interacteren -- Supabase is daarvoor gebouwd.
Maar de meeste echte projecten zijn niet zo schoon opgedeeld. En dat is waar het interessant wordt.
Database en data modeling
Directus
Directus gebruikt een "database-first" aanpak. Je definiëert je schema via de Directus UI of rechtstreeks in je database -- beide werken. De admin app genereert automatisch formulieren, relaties en validatie gebaseerd op je schema. Wil je een many-to-many relatie tussen articles en tags? Maak de junction table aan (of laat Directus het maken), en de admin UI rendert automatisch een fijne tag selector.
Iets wat ik waardeer: Directus creëert geen eigen abstractie laag over je tabellen. Je tabelnamen, kolomnamen en relaties zijn exact wat je hebt gedefinieerd. De system tabellen (voorgeplaatst met directus_) zitten naast je data maar verstoren het niet.
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 volledige Postgres instance met extensies zoals PostGIS, pgvector, pg_cron en honderden anderen. Schema management gebeurt via het SQL editor dashboard, hun table editor UI, of migraties via de Supabase CLI.
De migration workflow in Supabase is aanzienlijk verbeterd. De CLI genereert migration files, en je kunt supabase db diff gebruiken om schema veranderingen die via het dashboard zijn gemaakt vast te leggen. In 2026 hebben ze ook branching toegevoegd -- database branches die je schema veranderingen in isolatie laat testen voordat je ze naar productie samenvoegt.
-- Supabase migration voorbeeld
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 superpower als zijn steilste leercurve. Meer daarover later.
| Feature | Directus | Supabase |
|---|---|---|
| Database engine | PostgreSQL, MySQL, MariaDB, MS SQL, SQLite, CockroachDB, Oracle | PostgreSQL alleen |
| Schema management | GUI + direct SQL | GUI + SQL editor + CLI migrations |
| Database branching | Niet ingebouwd (gebruik aparte instances) | Ja (native, sinds eind 2024) |
| Extensies | Hangt af van gekozen DB | 60+ Postgres extensies |
| Vector/AI ondersteuning | Via extensies | pgvector ingebouwd |
| Directe DB toegang | Volledige toegang altijd | Volledige toegang altijd |
API Layer vergelijking
Directus APIs
Directus genereert automatisch zowel REST als GraphQL APIs van je schema. De REST API volgt een voorspelbaar patroon:
# Haal alle articles op met author relatie
GET /items/articles?fields=*,author.name&filter[status][_eq]=published&sort=-published_at&limit=10
Het filter systeem is expressief. Je kunt nested relational filters, aggregatie en zelfs geographic queries doen. De SDK wikkelt al dit mooi in:
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 (momenteel stabiel in 2026) heeft veel beter type inference gekregen, hoewel je nog steeds types van je schema moet genereren voor volledige type veiligheid.
Supabase APIs
Supabase genereert een REST API via PostgREST en biedt een JavaScript client library die meer voelt als een ORM:
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 standaard geen 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 wanneer ik Supabase gebruik. De select syntax met relationship joining dekt 95% van de use cases.
Eén gebied waar Supabase vooruitloopt: realtime subscriptions via WebSockets en edge functions voor server-side logica. Directus heeft Flows (hun automation engine), maar het is niet hetzelfde als een volledige serverless function runtime.

Content Management ervaring
Dit is waar Directus absoluut domineert. Het is niet eens dichtbij.
Directus's admin app is ontworpen voor content teams. Je krijgt:
- Aangepaste layouts: kanban borden, kalenders, kaarten, split views voor collection browsing
- WYSIWYG en block editors: De block editor in Directus 11 is echt goed
- Vertaalsondersteuning: Ingebouwde i18n met naast elkaar vertaal interfaces
- Revisie geschiedenis: Volledige content versioning met diff views
- Live preview: Configureer preview URLs zodat editors veranderingen kunnen zien voordat ze publiceren
- Granulaire permissies: Role-based toegang tot individuele velden toe
- Aangepaste dashboards: Analytics en overview panelen voor content teams
Supabase's table editor is... een table editor. Het is geweldig voor developers die een GUI voor hun database willen. Het is verschrikkelijk voor een marketing team dat een homepage hero sectie moet updaten. Als je een content-driven site bouwt en je editors zullen de backend rechtstreeks aanraken, wint Directus standaard.
Ik heb teams zien proberen een aangepaste admin UI op Supabase te bouwen voor content bewerking. Het werkt, maar je bouwt in wezen een CMS van nul af aan. Dat zijn maanden werk die Directus je op dag één geeft.
Als je op zoek bent naar een juiste headless CMS setup voor je website, werkt ons team regelmatig met Directus in headless CMS projecten -- het is een van onze go-to aanbevelingen voor content-heavy sites.
Authenticatie en autorisatie
Supabase Auth
Supabase Auth is een volledig featured authentication systeem. Email/password, magic links, 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.
-- Sta gebruikers toe alleen hun eigen profiel te zien
create policy "Users can view own profile"
on profiles for select
using (auth.uid() = id);
-- Sta gebruikers toe 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 als je het begrijpt, maar RLS policies kunnen snel complex worden. Debuggen waarom een query lege resultaten teruggeeft vanwege een ontbrekend beleid is een van die vreugdes die je leert te accepteren.
Directus Auth
Directus handelt verificatie af voor zijn eigen admin users en ondersteunt ook externe SSO via OpenID Connect, SAML, LDAP en OAuth2. Voor front-end app users zou je typisch Directus's user systeem met aangepaste roles gebruiken.
Het permissions model in Directus is GUI-driven. Je maakt roles, en dan voor elke role configureer je CRUD permissions per collection, optioneel met field-level en item-level regels. Het is meer visueel en naar mijn mening makkelijker om over na te denken dan RLS policies, maar minder flexibel voor complexe application logica.
Voor applicaties waar end-user auth het primaire onderdeel is (denk SaaS apps), is Supabase's auth systeem aanzienlijk volwassener. Voor het beheren van content team toegang is Directus's role systeem beter geschikt.
Realtime mogelijkheden
Supabase's realtime engine is production-ready en handelt presence, broadcast en database change listeners 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, collaborative tools, live dashboards en notification systemen.
Directus voegde WebSocket ondersteuning toe en heeft realtime subscriptions via hun GraphQL subscription endpoint. Het werkt, maar het is niet hetzelfde niveau van volwassenheid. Directus Realtime is prima voor "notify me when content changes" scenario's maar is niet gebouwd voor high-frequency collaborative applicaties.
Self-hosting en infrastructuur
Beide tools zijn open source en kunnen zelf gehost worden.
Directus is een Node.js applicatie verdeeld als npm package en Docker image. Self-hosting is eenvoudig -- wijs het naar je database, configureer omgevingsvariabelen en je draait. Ik heb het op Railway, Fly.io, AWS ECS en plain VPS instances geïmplementeerd zonder problemen.
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 development, maar production self-hosting vereist meer operationele kennis. De meeste teams kiezen voor Supabase's gehoste platform en besparen zichzelf de operationele overhead.
| Aspect | Directus Self-Hosted | Supabase Self-Hosted |
|---|---|---|
| Complexiteit | Laag-gemiddeld (single Node.js app + DB) | Hoog (7+ services) |
| Docker ondersteuning | Officiële image, eenvoudig | Docker Compose, complex |
| Min resources | 1 vCPU, 1GB RAM | 4 vCPU, 8GB RAM (all services) |
| Community guides | Uitgebreid | Groeiend maar minder volwassen |
| Beheerde alternatief | Directus Cloud | Supabase Platform |
Prijsopbouw 2026
Laten we over geld praten. Dit zijn actuele gepubliceerde prijzen vanaf begin 2026.
Directus Cloud
| Plan | Prijs | Inclusief |
|---|---|---|
| Community (self-hosted) | Gratis | Alles, zelf beheerd |
| Standard | €99/mnd | 1 project, 100K API requests, 5GB assets |
| Professional | €399/mnd | Custom domain, meer resources, priority support |
| Enterprise | Op aanvraag | SSO, SLA, dedicated infra |
Supabase Platform
| Plan | Prijs | Inclusief |
|---|---|---|
| Gratis | $0 | 500MB DB, 1GB storage, 50K auth users, 500K edge function invocations |
| Pro | $25/mnd | 8GB DB, 100GB storage, 100K auth users, 2M edge function invocations |
| Team | $599/mnd | Priority support, SOC2, dagelijkse backups, 28-day log retention |
| Enterprise | Op aanvraag | SLA, dedicated support, custom contracts |
Het prijsverschil is schrikbarend. Supabase's gratis tier is echt bruikbaar voor side projects en MVPs. Directus Cloud's instappunt van €99/maand is steil voor experimenteren -- maar self-hosting Directus op een €5/maand VPS werkt prima voor kleine projecten.
Voor een startup die een app bouwt geeft Supabase's €25/maand Pro plan je veel. Voor een bedrijf met een content-heavy website draait Directus self-hosted plus een beheerde PostgreSQL instance misschien €20-50/maand totaal.
Developer Experience
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
- Schema types kunnen gegenereerd worden van je instance
- Extensions systeem voor aangepaste endpoints, hooks, panels en interfaces
- Flows (visuele automation) kunnen eenvoudige backend logica vervangen
- De admin app is aanpasbaar met aangepaste modules en layouts
- Image transformaties ingebouwd in de asset delivery API
Supabase DX
- TypeScript types auto-gegenereerd van je schema (
supabase gen types typescript) - Local development met
supabase start(draait alles in Docker) - Edge Functions (Deno-based) voor server-side logica
- Ingebouwde vector search met pgvector voor AI features
- CLI-driven workflow met migrations, branching en CI/CD
- Vercel/Netlify integratie voor env variable syncing
Beide hebben solide documentatie. Supabase's docs zijn bijzonder goed georganiseerd met framework-specifieke gidsen (Next.js, Nuxt, SvelteKit, Flutter, enz.). Directus's docs zijn grondig maar hinken soms achter op de nieuwste SDK veranderingen.
Wanneer elk gebruiken
Na uitgebreid met beide te bouwen, hier is mijn besluitvormingsframework:
Kies Directus wanneer:
- Content editors hebben een gepolijste admin interface nodig
- Je bouwt een marketing site, blog of editorial platform
- Je hebt multi-language content management nodig
- Je bestaande database heeft een management UI nodig
- Content workflows (drafts, reviews, approvals) zijn belangrijk
- Je wilt MySQL, MariaDB of een andere non-PostgreSQL database gebruiken
Kies Supabase wanneer:
- Je bouwt een user-facing applicatie (SaaS, marketplace, social)
- Je hebt authenticatie en user management nodig
- Realtime features zijn een core vereiste
- Je wilt edge functions voor server-side logica
- AI/vector search is onderdeel van je roadmap
- Je wilt het snelste pad van idee tot deployed app
Gebruik beide wanneer:
Dit is niet gek. Ik heb systemen gebouwd waar Supabase user auth, app data en realtime features handelt, terwijl Directus de marketing site content, blog en documentatie beheert. Ze kunnen dezelfde PostgreSQL instance delen of aparte databases gebruiken. De scheiding van concerns maakt de architectuur eigenlijk schoner.
Als je probeert de juiste backend architectuur voor je project uit te vogelen, dat is letterlijk wat ons team doet -- voel je vrij om contact op te nemen en je specifieke situatie door te spreken.
Veelgestelde vragen
Kan Directus Supabase vervangen als backend voor web apps? Gedeeltelijk. Directus geeft je een database API en user management, dus voor eenvoudige CRUD apps kan het werken. Maar je zult Supabase's ingebouwde auth systeem, realtime subscriptions, edge functions en file storage service missen. Directus is geoptimaliseerd voor content management, niet voor application backend workloads. Voor een eenvoudige app met meestal content operations is Directus prima. Voor iets met user authentication flows, realtime features of complexe server-side logica wil je Supabase of iets soortgelijks.
Is Supabase goed als headless CMS? Het kan functioneren als een, maar vereist aanzienlijk aangepast werk. Je zou je eigen admin interface voor content editors moeten bouwen, image transformaties afzonderlijk handelen, content versioning handmatig implementeren en je eigen preview systeem maken. Teams hebben dit gedaan met tools zoals Supabase + custom React admin panels, maar je hebt het wiel opnieuw uit gevonden wat Directus (of Strapi, of Payload) je uit de doos geeft. Als content management je primaire behoefte is, gebruik een dedicated 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 management in server components en middleware handelen. Directus werkt ook fijn met Next.js -- je haalt data op via de SDK in server components en gebruikt ISR of SSG voor performance. Voor een marketing site met een blog zou ik Next.js met Directus koppelen. Voor een SaaS app met user accounts, Next.js met Supabase. We dekken dit uitgebreid in onze Next.js development practice.
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 converteert naar Apache 2.0; Supabase gebruikt Apache 2.0 voor de meeste componenten). Directus is makkelijker zelf te hosten -- het is een enkele Node.js app. Supabase self-hosting vereist meerdere services uit te voeren (PostgreSQL, PostgREST, GoTrue, Realtime, Storage, Kong). Voor Supabase kiezen de meeste developers voor het gehoste platform en besparen zichzelf de operationele overhead.
Hoe handelen Directus en Supabase file storage en media? Directus heeft een ingebouwd asset management systeem met on-the-fly image transformaties (resize, crop, format conversie). Je laadt bestanden via de admin UI of API op, en vraagt getransformeerde versies aan via URL parameters. Supabase Storage is een S3-compatible file storage service met RLS-based access control. Het handelt uploads en downloads goed af maar heeft geen ingebouwde image transformaties -- je zou het koppelen met een service zoals Imgix, Cloudinary of Supabase's eigen image transformation (wat in 2025 als beta is gelanceerd).
Hoe zit het met performance en schaalbaarheid? Supabase's infrastructuur is gebouwd op AWS met connection pooling via Supavisor en kan aanzienlijk verkeer handelen. Hun Pro plan databases kunnen geschaald worden tot 64GB RAM instances. Directus performance hangt zwaar af van je hosting setup en database. Met juiste caching (Redis, CDN) handelt Directus hoog traffic goed af, maar je bent verantwoordelijk voor de infrastructuur. In benchmarks kunnen beide duizenden requests per seconde handelen met passende resources. Het bottleneck is bijna altijd de database, niet de API laag.
Is Directus of Supabase beter voor een team met niet-technische leden? Directus, zonder twijfel. Zijn admin interface is ontworpen voor niet-developers. Je kunt aangepaste dashboards maken, content approval workflows opzetten en toegang beperken per role -- allemaal zonder code te schrijven. Supabase's dashboard is een developer tool. Je marketing team gaat geen SQL schrijven om een landing page bij te werken. Als niet-technische team leden data moeten beheren, is Directus's UI de juiste keuze.
Kan ik later van de een naar de ander migreren? Omdat beide PostgreSQL-compatible zijn (en Directus aanvullende databases ondersteunt) is migratie haalbaar maar niet triviaal. Als je op Directus met PostgreSQL bent en Supabase wilt toevoegen, zou je Supabase naar je bestaande database kunnen wijzen of de data migreren. De Directus system tables en Supabase's auth schema zou naast elkaar moeten bestaan of gescheiden worden. De andere kant op gaan -- Directus toevoegen bovenop een Supabase database -- is eigenlijk een goed gedocumenteerd patroon. Directus kan bestaande tabellen introspecteer en zijn management laag maken zonder je data schema te wijzigen.