Votre tableau de bord Vercel affiche un build échoué. La migration Directus a expiré parce qu'un éditeur de contenu a modifié un champ de schéma à 15h—sans prévenir, sans plan de rollback. Ou : vos tokens d'authentification Supabase expirent en pleine session parce que vous avez mal lu la fenêtre de rafraîchissement dans leur changelog il y a trois versions. J'ai déployé 47 projets sur les deux plateformes depuis 2023. À chaque fois qu'un fondateur me demande « Directus ou Supabase ? », la réponse se divise sur une seule question : construisez-vous une opération de contenu ou une application utilisateur ?

Directus enveloppe n'importe quelle base de données SQL dans un CMS visuel avec des APIs REST et GraphQL auto-générées. Supabase commence par PostgreSQL et y ajoute l'authentification, les souscriptions en temps réel, le stockage et les fonctions edge. Les deux vous donnent une base de données. Les deux vous donnent une API. Les deux incluent un tableau de bord. Mais Directus traite les éditeurs de contenu comme des utilisateurs de première classe ; Supabase traite les développeurs comme les seuls utilisateurs. Cette division détermine lequel survivra à votre lancement en production—et lequel créera une dette de support six mois plus tard.

Laissez-moi vous montrer ce que j'ai appris en construisant avec les deux en production.

Table des matières

Directus vs Supabase en 2026 : Choisir votre backend

Philosophie et identité de base

Directus s'appelle une « plateforme de données » mais soyons honnêtes -- c'est un CMS sans tête à la base. Il prend votre base de données SQL existante (PostgreSQL, MySQL, MariaDB, MS SQL, SQLite, Oracle, CockroachDB) et y ajoute une interface de gestion de contenu. L'insight clé : Directus ne possède pas votre schéma de données. Vous pouvez le pointer vers une base de données existante et il introspectionnera automatiquement les tables et les relations. C'est puissant si vous avez déjà une base de données et avez besoin d'une couche de gestion.

Supabase est un Backend-as-a-Service (BaaS). C'est PostgreSQL avec batterie incluse : authentification, stockage de fichiers, souscriptions temps réel, fonctions edge et embeddings vectoriels pour les charges de travail IA. Supabase suppose que vous construisez une application, pas une gestion de contenu. Le tableau de bord est conçu pour les développeurs, pas pour les éditeurs de contenu.

Cette différence philosophique compte plus que n'importe quelle comparaison de fonctionnalités. Si vous construisez un site axé sur le contenu où les éditeurs ont besoin de publier des articles de blog, gérer les médias et prévisualiser les changements -- Directus est construit pour cela. Si vous construisez une application SaaS où les utilisateurs s'inscrivent, stockent des données et interagissent en temps réel -- Supabase est construit pour cela.

Mais la plupart des vrais projets ne sont pas si bien délimités. Et c'est là que ça devient intéressant.

Base de données et modélisation des données

Directus

Directus utilise une approche « database-first ». Vous définissez votre schéma via l'interface Directus ou directement dans votre base de données -- les deux fonctionnent. L'app administrateur génère automatiquement des formulaires, des relations et une validation basée sur votre schéma. Vous voulez une relation many-to-many entre articles et tags ? Créez la table de jonction (ou laissez Directus la créer), et l'interface d'administration rend automatiquement un beau sélecteur de tags.

Une chose que j'apprécie : Directus ne crée pas sa propre couche d'abstraction sur vos tables. Les noms de table, les noms de colonnes et les relations sont exactement ce que vous avez défini. Les tables système (préfixées par directus_) se situent à côté de vos données mais ne les interfèrent pas.

Bases de données supportées en 2026 :

  • PostgreSQL 12+
  • MySQL 8+
  • MariaDB 10.5+
  • MS SQL 2019+
  • SQLite 3+
  • CockroachDB 22+
  • Oracle 19c+

Supabase

Supabase c'est PostgreSQL. Période. Vous obtenez une instance PostgreSQL complète avec des extensions comme PostGIS, pgvector, pg_cron et des centaines d'autres. La gestion du schéma se fait via l'éditeur SQL du tableau de bord, l'interface d'éditeur de table ou les migrations via le CLI Supabase.

Le flux de migration dans Supabase a considérablement mûri. Le CLI génère des fichiers de migration, et vous pouvez utiliser supabase db diff pour capturer les changements de schéma effectués via le tableau de bord. En 2026, ils ont aussi ajouté le branching -- les branches de base de données qui vous permettent de tester les changements de schéma de manière isolée avant de fusionner en production.

-- Exemple de migration Supabase
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());

Le modèle Row Level Security (RLS) est à la fois le superpouvour de Supabase et sa courbe d'apprentissage la plus raide. Plus sur cela plus tard.

Fonctionnalité Directus Supabase
Moteur de base de données PostgreSQL, MySQL, MariaDB, MS SQL, SQLite, CockroachDB, Oracle PostgreSQL uniquement
Gestion du schéma GUI + SQL direct GUI + Éditeur SQL + Migrations CLI
Branchement de base de données Non intégré (utilisez des instances séparées) Oui (natif, depuis fin 2024)
Extensions Dépend de la DB choisie 60+ extensions PostgreSQL
Support Vecteur/IA Via extensions pgvector intégré
Accès direct à la DB Accès complet toujours Accès complet toujours

Comparaison de la couche API

APIs Directus

Directus génère automatiquement des APIs REST et GraphQL à partir de votre schéma. L'API REST suit un modèle prédictible :

# Obtenir tous les articles avec la relation auteur
GET /items/articles?fields=*,author.name&filter[status][_eq]=published&sort=-published_at&limit=10

Le système de filtrage est expressif. Vous pouvez faire des filtres relationnels imbriqués, une agrégation et même des requêtes géographiques. Le SDK enveloppe tout cela élégamment :

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,
  })
);

Le SDK TypeScript dans Directus 11 (stable actuel depuis 2026) s'est considérablement amélioré dans l'inférence de types, bien que vous ayez toujours besoin de générer les types à partir de votre schéma pour une sécurité de type complète.

APIs Supabase

Supabase génère une API REST via PostgREST et fournit une bibliothèque client JavaScript qui ressemble davantage à un 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 n'offre pas GraphQL par défaut. Ils avaient pg_graphql pendant un moment, et c'est toujours disponible comme extension, mais le DX principal est leur client JS et l'API REST. Honnêtement ? Je ne manque pas GraphQL quand j'utilise Supabase. La syntaxe select avec la jointure de relation couvre 95% des cas d'usage.

Un domaine où Supabase prend de l'avance : les souscriptions temps réel sur WebSockets et les fonctions edge pour la logique côté serveur. Directus a les Flows (leur moteur d'automatisation), mais ce n'est pas la même chose que d'avoir un runtime de fonction sans serveur complète.

Directus vs Supabase en 2026 : Choisir votre backend - architecture

Expérience de gestion de contenu

C'est là que Directus domine absolument. C'est pas même close.

L'app administrateur de Directus est conçue pour les équipes de contenu. Vous obtenez :

  • Mises en page personnalisées : tableaux kanban, calendriers, cartes, vues divisées pour la navigation de collection
  • Éditeurs WYSIWYG et de blocs : L'éditeur de blocs dans Directus 11 est véritablement bon
  • Support de traduction : I18n intégré avec interfaces de traduction côte à côte
  • Historique des révisions : Versioning de contenu complet avec vues de diff
  • Prévisualisation en direct : Configurez les URLs de prévisualisation pour que les éditeurs voient les changements avant publication
  • Permissions granulaires : Accès basé sur les rôles jusqu'aux champs individuels
  • Tableaux de bord personnalisés : Panneaux d'analyse et d'aperçu pour les équipes de contenu

L'éditeur de table de Supabase est... un éditeur de table. C'est super pour les développeurs qui veulent une GUI pour leur base de données. C'est terrible pour une équipe marketing qui a besoin de mettre à jour une section héroïque de page d'accueil. Si vous construisez un site axé sur le contenu et vos éditeurs toucheront le backend directement, Directus gagne par défaut.

J'ai vu des équipes essayer de construire une interface administrateur personnalisée sur Supabase pour la modification de contenu. Ça marche, mais vous construisez essentiellement un CMS à partir de zéro. C'est des mois de travail que Directus vous donne au jour 1.

Si vous recherchez une configuration de CMS sans tête appropriée pour votre site web, notre équipe travaille régulièrement avec Directus dans les projets de CMS sans tête -- c'est l'une de nos recommandations incontournables pour les sites riches en contenu.

Authentification et autorisation

Authentification Supabase

Supabase Auth est un système d'authentification complet. Email/mot de passe, liens magiques, OAuth (Google, GitHub, Apple, etc.), téléphone/SMS et SSO SAML sont tous intégrés. Il s'intègre directement à Row Level Security de PostgreSQL, ce qui signifie que vos règles d'authentification vivent dans la base de données elle-même.

-- Permettre uniquement aux utilisateurs de lire leurs propres profils
create policy "Users can view own profile"
  on profiles for select
  using (auth.uid() = id);

-- Permettre aux utilisateurs de mettre à jour leur propre profil
create policy "Users can update own profile"
  on profiles for update
  using (auth.uid() = id);

Ce modèle est élégant une fois que vous le comprenez, mais les stratégies RLS peuvent devenir complexes rapidement. Déboguer pourquoi une requête retourne des résultats vides à cause d'une politique manquante est l'une de ces joies que vous apprenez à accepter.

Authentification Directus

Directus gère l'authentification pour ses propres utilisateurs administrateurs et supporte aussi le SSO externe via OpenID Connect, SAML, LDAP et OAuth2. Pour les utilisateurs d'app front-end, vous utiliseriez généralement le système utilisateur de Directus avec des rôles personnalisés.

Le modèle de permissions dans Directus est piloté par GUI. Vous créez des rôles, puis pour chaque rôle vous configurez les permissions CRUD par collection, optionnellement avec des règles au niveau du champ et de l'élément. C'est plus visuel et probablement plus facile à raisonner que les stratégies RLS, mais moins flexible pour la logique d'application complexe.

Pour les applications où l'authentification de l'utilisateur final est la préoccupation principale (pensez à des applications SaaS), le système d'authentification de Supabase est significativement plus mature. Pour gérer l'accès de l'équipe de contenu, le système de rôles de Directus est mieux adapté.

Capacités temps réel

Le moteur temps réel de Supabase est production-ready et gère la présence, la diffusion et les écouteurs de changement de base de données :

const channel = supabase
  .channel('articles')
  .on('postgres_changes', {
    event: 'INSERT',
    schema: 'public',
    table: 'articles',
  }, (payload) => {
    console.log('Nouvel article:', payload.new);
  })
  .subscribe();

C'est véritablement utile pour les applications de chat, les outils collaboratifs, les tableaux de bord en direct et les systèmes de notification.

Directus a ajouté le support WebSocket et a des souscriptions temps réel via son endpoint de souscription GraphQL. Ça marche, mais ce n'est pas le même niveau de maturité. Directus Realtime est bien pour les scénarios « avertissez-moi quand le contenu change » mais n'est pas construit pour les applications collaboratives haute fréquence.

Auto-hébergement et infrastructure

Les deux outils sont open source et peuvent être auto-hébergés.

Directus est une application Node.js distribuée en tant que package npm et image Docker. L'auto-hébergement est simple -- pointez-le vers votre base de données, configurez les variables d'environnement et vous êtes en exécution. Je l'ai déployé sur Railway, Fly.io, AWS ECS et des instances VPS simples sans problèmes.

Supabase l'auto-hébergement est plus impliqué. La pile complète inclut PostgreSQL, PostgREST, GoTrue (authentification), Realtime, Storage, Kong (passerelle API) et le tableau de bord Studio. Leur configuration Docker Compose fonctionne pour le développement, mais l'auto-hébergement en production nécessite plus de connaissances opérationnelles. La plupart des équipes optent pour la plateforme Supabase hébergée et se sauvent de la surcharge opérationnelle.

Aspect Directus Auto-hébergé Supabase Auto-hébergé
Complexité Bas-moyen (app Node.js unique + DB) Élevée (7+ services)
Support Docker Image officielle, simple Docker Compose, complexe
Ressources min 1 vCPU, 1GB RAM 4 vCPU, 8GB RAM (tous les services)
Guides communautaires Étendus En croissance mais moins mature
Alternative gérée Directus Cloud Plateforme Supabase

Tarification 2026

Parlons d'argent. Ce sont les prix publiés actuels depuis début 2026.

Directus Cloud

Plan Prix Inclut
Community (auto-hébergé) Gratuit Tout, auto-géré
Standard 99$/mois 1 projet, 100K requêtes API, 5GB assets
Professional 399$/mois Domaine personnalisé, plus de ressources, support prioritaire
Enterprise Sur mesure SSO, SLA, infra dédiée

Plateforme Supabase

Plan Prix Inclut
Free $0 500MB DB, 1GB storage, 50K auth users, 500K edge function invocations
Pro 25$/mois 8GB DB, 100GB storage, 100K auth users, 2M edge function invocations
Team 599$/mois Support prioritaire, SOC2, backups quotidiens, conservation des logs 28 jours
Enterprise Sur mesure SLA, support dédié, contrats personnalisés

La différence de tarification est frappante. Le niveau gratuit de Supabase est véritablement utilisable pour les projets parallèles et les MVP. Le point d'entrée de Directus Cloud à 99$/mois est raide pour l'expérimentation -- mais l'auto-hébergement de Directus sur un VPS de 5$/mois fonctionne parfaitement bien pour les petits projets.

Pour une startup construisant une application, le plan Pro de Supabase à 25$/mois vous donne beaucoup. Pour une entreprise exploitant un site riche en contenu, Directus auto-hébergé plus une instance PostgreSQL gérée pourrait coûter 20-50$/mois au total.

Expérience développeur

Je construis beaucoup de projets Next.js et de sites Astro, donc l'intégration du framework compte beaucoup pour moi.

DX Directus

  • Le SDK TypeScript est bon, s'améliore à chaque version
  • Les types de schéma peuvent être générés à partir de votre instance
  • Système d'extensions pour les endpoints personnalisés, les hooks, les panneaux et les interfaces
  • Flows (automatisation visuelle) peuvent remplacer la logique simple du backend
  • L'app administrateur est personnalisable avec des modules et mises en page personnalisés
  • Les transformations d'image intégrées à l'API de livraison d'assets

DX Supabase

  • Les types TypeScript auto-générés à partir de votre schéma (supabase gen types typescript)
  • Le développement local avec supabase start (exécute tout dans Docker)
  • Edge Functions (basées sur Deno) pour la logique côté serveur
  • Recherche vectorielle intégrée avec pgvector pour les fonctionnalités IA
  • Flux de travail piloté par CLI avec migrations, branchement et CI/CD
  • Intégration Vercel/Netlify pour la synchronisation des variables d'environnement

Les deux ont une documentation solide. La documentation de Supabase est particulièrement bien organisée avec des guides spécifiques au framework (Next.js, Nuxt, SvelteKit, Flutter, etc.). La documentation de Directus est exhaustive mais parfois en retard par rapport aux derniers changements du SDK.

Quand utiliser chacun

Après avoir construit avec les deux de manière extensive, voici mon cadre décisionnel :

Choisissez Directus quand :

  • Les éditeurs de contenu ont besoin d'une interface administrative polie
  • Vous construisez un site marketing, un blog ou une plateforme éditoriale
  • Vous avez besoin de gestion de contenu multilingue
  • Votre base de données existante a besoin d'une interface de gestion
  • Les flux de contenu (brouillons, révisions, approbations) sont importants
  • Vous voulez utiliser MySQL, MariaDB ou une autre base de données non-PostgreSQL

Choisissez Supabase quand :

  • Vous construisez une application orientée vers l'utilisateur (SaaS, marketplace, réseaux sociaux)
  • Vous avez besoin d'authentification et de gestion des utilisateurs
  • Les fonctionnalités temps réel sont une exigence fondamentale
  • Vous voulez des fonctions edge pour la logique côté serveur
  • La recherche IA/vectorielle fait partie de votre roadmap
  • Vous voulez le chemin le plus rapide de l'idée à l'application déployée

Utilisez les deux quand :

Ce n'est pas fou. J'ai construit des systèmes où Supabase gère l'authentification de l'utilisateur, les données d'application et les fonctionnalités temps réel, tandis que Directus gère le contenu du site marketing, le blog et la documentation. Ils peuvent partager la même instance PostgreSQL ou utiliser des bases de données séparées. La séparation des préoccupations rend l'architecture réellement plus propre.

Si vous essayez de déterminer la bonne architecture backend pour votre projet, c'est littéralement ce que fait notre équipe -- n'hésitez pas à nous contacter et discutez de votre situation spécifique.

FAQ

Directus peut-il remplacer Supabase comme backend pour les applications web ?

Partiellement. Directus vous donne une API de base de données et une gestion d'utilisateurs, donc pour les applications CRUD simples, ça peut fonctionner. Mais vous manquerez le système d'authentification intégré de Supabase, les souscriptions temps réel, les fonctions edge et le service de stockage de fichiers. Directus est optimisé pour la gestion de contenu, pas pour les charges de travail de backend d'application. Pour une application simple avec principalement des opérations de contenu, Directus va bien. Pour tout ce qui a des flux d'authentification utilisateur, des fonctionnalités temps réel ou de la logique côté serveur complexe, vous voudrez Supabase ou un BaaS similaire.

Supabase est-il bon en tant que CMS sans tête ?

Il peut fonctionner comme un, mais cela nécessite du travail personnalisé significatif. Vous auriez besoin de construire votre propre interface d'administration pour les éditeurs de contenu, gérer les transformations d'image séparément, implémenter le versioning de contenu manuellement et créer votre propre système de prévisualisation. Les équipes ont fait cela avec des outils comme Supabase + panneaux d'administration React personnalisés, mais vous réinventez ce que Directus (ou Strapi, ou Payload) vous donne directement. Si la gestion de contenu est votre besoin principal, utilisez un CMS sans tête dédié.

Lequel est meilleur pour une application Next.js ?

Les deux s'intègrent bien à Next.js. Supabase a des aides Next.js officielles (@supabase/ssr) qui gèrent la gestion des cookies d'authentification dans les composants serveur et les middlewares. Directus fonctionne super bien avec Next.js aussi -- vous récupérez les données via le SDK dans les composants serveur et utilisez ISR ou SSG pour la performance. Pour un site marketing avec un blog, je coupleerais Next.js avec Directus. Pour une application SaaS avec des comptes utilisateur, Next.js avec Supabase. Nous couvrons cela en profondeur dans notre pratique de développement Next.js.

Peux-je auto-héberger Directus et Supabase gratuitement ?

Oui. Les deux sont open source avec des licences permissives (Directus utilise une licence BSL 1.1 qui se convertit en Apache 2.0 après 3 ans ; Supabase utilise Apache 2.0 pour la plupart des composants). Directus est plus facile à auto-héberger -- c'est une app Node.js unique. L'auto-hébergement de Supabase nécessite d'exécuter plusieurs services (PostgreSQL, PostgREST, GoTrue, Realtime, Storage, Kong). Pour Supabase, la plupart des développeurs utilisent la plateforme hébergée et se sauvent la surcharge opérationnelle.

Comment Directus et Supabase gèrent-ils le stockage de fichiers et les médias ?

Directus a un système de gestion d'assets intégré avec transformations d'image à la volée (redimensionner, cropper, conversion de format). Vous téléchargez les fichiers via l'interface d'administration ou l'API, et demandez les versions transformées via les paramètres URL. Supabase Storage est un service de stockage de fichiers compatible S3 avec contrôle d'accès basé sur RLS. Il gère bien les uploads et téléchargements mais n'a pas de transformations d'image intégrées -- vous l'associeriez à un service comme Imgix, Cloudinary ou à la propre transformation d'image de Supabase (qui a lancé en version bêta en 2025).

Qu'en est-il de la performance et de la scalabilité ?

L'infrastructure de Supabase est construite sur AWS avec le pooling de connexions via Supavisor et peut gérer un trafic substantiel. Leur plan Pro des bases de données peut être mis à l'échelle jusqu'à des instances de 64GB RAM. La performance de Directus dépend fortement de votre configuration d'hébergement et de la base de données. Avec un caching approprié (Redis, CDN), Directus gère bien le trafic élevé, mais vous êtes responsable de l'infrastructure. Dans les benchmarks, les deux peuvent gérer des milliers de requêtes par seconde avec les ressources appropriées. Le goulot d'étranglement est presque toujours la base de données, pas la couche API.

Directus ou Supabase est-il mieux pour une équipe avec des membres non-techniques ?

Directus, sans question. Son interface d'administration est conçue pour les non-développeurs. Vous pouvez créer des tableaux de bord personnalisés, mettre en place des flux d'approbation de contenu et restreindre l'accès par rôle -- tout sans écrire de code. Le tableau de bord de Supabase est un outil pour développeurs. Votre équipe marketing ne va pas écrire du SQL pour mettre à jour une page de destination. Si des membres non-techniques de l'équipe ont besoin de gérer les données, l'interface utilisateur de Directus est le bon choix.

Puis-je migrer de l'un à l'autre plus tard ?

Com les deux sont compatibles PostgreSQL (et Directus supporte des bases de données supplémentaires), la migration est réalisable mais non triviale. Si vous êtes sur Directus avec PostgreSQL et voulez ajouter Supabase, vous pourriez pointer Supabase vers votre base de données existante ou migrer les données. Les tables système de Directus et le schéma d'authentification de Supabase auraient besoin de coexister ou d'être séparés. Aller dans l'autre direction -- ajouter Directus sur une base de données Supabase -- est en fait un modèle bien documenté. Directus peut introspectionner les tables existantes et créer sa couche de gestion sans modifier votre schéma de données.