Directus vs Supabase en 2026 : Choisir votre backend
Directus vs Supabase en 2026 : Choisir Votre Backend
J'ai livré des projets sur Directus et Supabase au cours des trois dernières années. Chaque fois que quelqu'un me demande « lequel devrais-je choisir ? », ma réponse est la même : cela dépend de ce que vous construisez vraiment. Ce n'est pas une échappatoire -- ces deux outils servent véritablement des objectifs primaires différents, même s'ils se chevauchent de manière surprenante. Directus est un CMS headless qui enveloppe n'importe quelle base de données SQL dans une belle interface d'administration et une API REST/GraphQL. Supabase est une alternative à Firebase construite sur PostgreSQL qui vous donne l'authentification, les abonnements en temps réel, le stockage, et les fonctions edge. Le chevauchement ? Les deux vous donnent une base de données, les deux vous donnent une API, et les deux ont un tableau de bord pour gérer les données. Mais la philosophie derrière chacun est fondamentalement différente, et cette philosophie façonne chaque décision que vous prendrez par la suite.
Laissez-moi vous montrer ce que j'ai appris en construisant avec les deux en production.
Table des Matières
- Philosophie et Identité Centrale
- Base de Données et Modélisation des Données
- Comparaison de la Couche API
- Expérience de Gestion du Contenu
- Authentification et Autorisation
- Capacités en Temps Réel
- Auto-Hébergement et Infrastructure
- Décomposition des Tarifs 2026
- Expérience Développeur
- Quand Utiliser Chacun
- FAQ

Philosophie et Identité Centrale
Directus s'appelle une « plateforme de données » mais soyons honnêtes -- c'est un CMS headless dans son essence. Il prend votre base de données SQL existante (PostgreSQL, MySQL, MariaDB, MS SQL, SQLite, Oracle, CockroachDB) et crée une interface de gestion de contenu dessus. L'idée 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 tous les accessoires : authentification, stockage de fichiers, abonnements en temps réel, fonctions edge, et intégrations vectorielles pour les charges de travail IA. Supabase suppose que vous construisez une application, pas du contenu. Le tableau de bord est conçu pour les développeurs, pas pour les éditeurs de contenu.
Cette différence philosophique est plus importante que n'importe quelle comparaison de fonctionnalités. Si vous construisez un site web centré sur le contenu où les éditeurs doivent publier des billets de blog, gérer les médias, et prévisualiser les modifications -- Directus est construit à cet effet. 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 simples. Et c'est là que les choses deviennent intéressantes.
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 utilisateur Directus ou directement dans votre base de données -- les deux fonctionnent. L'application d'administration 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 vos tables, les noms de colonnes, et les relations sont exactement ce que vous avez défini. Les tables système (préfixées par directus_) s'assoient à côté de vos données mais ne les interfèrent pas.
Bases de données prises en charge en 2026 :
- PostgreSQL 12+
- MySQL 8+
- MariaDB 10.5+
- MS SQL 2019+
- SQLite 3+
- CockroachDB 22+
- Oracle 19c+
Supabase
Supabase est PostgreSQL. Point final. Vous obtenez une instance Postgres complète avec des extensions comme PostGIS, pgvector, pg_cron, et des centaines d'autres. La gestion des schémas se fait via l'éditeur SQL du tableau de bord, leur interface graphique d'éditeur de tableau, ou les migrations via le CLI Supabase.
Le flux de travail 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 modifications de schéma apportées via le tableau de bord. En 2026, ils ont aussi ajouté le branchement -- des branches de base de données qui vous permettent de tester les modifications de schéma en isolation 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 "Les articles publiés sont visibles par tous"
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 superpouvair de Supabase et sa courbe d'apprentissage la plus raide. Plus à ce sujet 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é (utiliser des instances séparées) | Oui (natif, depuis fin 2024) |
| Extensions | Dépend de la BD choisie | 60+ extensions Postgres |
| Support Vector/IA | Via extensions | pgvector intégré |
| Accès Direct à la BD | 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évisible :
# 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, d'agrégation, et même des requêtes géographiques. Le SDK enveloppe tout cela joliment :
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 en 2026) a beaucoup amélioré l'inférence de type, bien que vous ayez toujours besoin de générer des types à partir de votre schéma pour la sécurité des types complète.
APIs Supabase
Supabase génère une API REST via PostgREST et fournit une bibliothèque cliente JavaScript qui ressemble plus à 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 ne propose pas GraphQL d'emblée. Ils avaient pg_graphql pendant un moment, et c'est toujours disponible en tant qu'extension, mais le DX principal est leur client JS et l'API REST. Honnêtement ? Je n'ai pas manqué GraphQL en utilisant Supabase. La syntaxe select avec jointure relationnelle couvre 95 % des cas d'usage.
Un domaine où Supabase tire parti : les abonnements en temps réel sur WebSockets et les fonctions edge pour la logique côté serveur. Directus a des Flows (leur moteur d'automation), mais ce n'est pas la même chose qu'avoir un runtime de fonction serverless complet.

Expérience de Gestion du Contenu
C'est là où Directus domine absolument. Ce n'est même pas proche.
L'application d'administration de Directus est conçue pour les équipes de contenu. Vous obtenez :
- Mises en page personnalisées : tableaux kanban, calendriers, cartes, vues partagées pour la navigation de collection
- Éditeurs WYSIWYG et par 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 : Contrôle de version complet du contenu avec vues de différence
- Aperçu en direct : Configurez des URL d'aperçu afin que les éditeurs puissent voir les modifications avant de publier
- Autorisations granulaires : Accès basé sur les rôles jusqu'aux champs individuels
- Tableaux de bord personnalisés : Panneaux d'analyses et d'aperçu pour les équipes de contenu
L'éditeur de tableau Supabase est... un éditeur de tableau. C'est super pour les développeurs qui veulent une interface graphique pour leur base de données. C'est terrible pour une équipe marketing qui doit mettre à jour une section héros de page d'accueil. Si vous construisez un site centré sur le contenu et vos éditeurs vont toucher directement au backend, Directus gagne par défaut.
J'ai vu des équipes essayer de construire une interface d'administration personnalisée sur Supabase pour l'édition de contenu. Ça marche, mais vous construisez essentiellement un CMS à partir de zéro. C'est des mois de travail que Directus vous donne le jour un.
Si vous cherchez une configuration appropriée de CMS headless pour votre site web, notre équipe travaille régulièrement avec Directus dans les projets CMS headless -- c'est l'une de nos recommandations principales pour les sites riches en contenu.
Authentification et Autorisation
Auth Supabase
Supabase Auth est un système d'authentification complètement doté. 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 avec 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 seulement aux utilisateurs de lire leurs propres profils
create policy "Les utilisateurs peuvent voir leur propre profil"
on profiles for select
using (auth.uid() = id);
-- Permettre aux utilisateurs de mettre à jour leur propre profil
create policy "Les utilisateurs peuvent mettre à jour leur profil"
on profiles for update
using (auth.uid() = id);
Ce modèle est élégant une fois que vous le comprenez, mais les politiques 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.
Auth Directus
Directus gère l'authentification de ses propres utilisateurs d'administration et soutient aussi l'authentification SSO externe via OpenID Connect, SAML, LDAP, et OAuth2. Pour les utilisateurs d'applications front-end, vous utiliseriez généralement le système utilisateur de Directus avec des rôles personnalisés.
Le modèle d'autorisations dans Directus est piloté par l'interface graphique. Vous créez des rôles, puis pour chaque rôle vous configurez les autorisations 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 politiques RLS, mais moins flexible pour la logique métier complexe.
Pour les applications où l'authentification de l'utilisateur final est la préoccupation principale (pensez aux 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 en Temps Réel
Le moteur realtime de Supabase est prêt pour la production 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 vraiment 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 abonnements en temps réel via son endpoint de souscription GraphQL. Ça marche, mais ce n'est pas le même niveau de maturité. Le realtime de Directus convient pour les scénarios « notifiez-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 comme un package npm et une image Docker. L'auto-hébergement est simple -- pointez-le vers votre base de données, configurez les variables d'environnement, et vous faites tourner. Je l'ai déployé sur Railway, Fly.io, AWS ECS, et des instances VPS simples sans problème.
Supabase auto-hébergement est plus complexe. La pile complète inclut PostgreSQL, PostgREST, GoTrue (auth), 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 opt pour la plateforme hébergée de Supabase et se sauvent les frais opérationnels.
| Aspect | Directus Auto-Hébergé | Supabase Auto-Hébergé |
|---|---|---|
| Complexité | Faible-moyen (app Node.js unique + BD) | Élevée (7+ services) |
| Support Docker | Image officielle, simple | Docker Compose, complexe |
| Ressources Min | 1 vCPU, 1GB RAM | 4 vCPU, 8GB RAM (tous services) |
| Guides Communautaires | Extensif | Croissance mais moins mature |
| Alternative Gérée | Directus Cloud | Plateforme Supabase |
Décomposition des Tarifs 2026
Parlons argent. Ce sont les tarifs actuellement publiés au 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 d'actifs |
| Professional | 399$/mois | Domaine personnalisé, plus de ressources, support prioritaire |
| Enterprise | Sur demande | SSO, SLA, infrastructure dédiée |
Plateforme Supabase
| Plan | Prix | Inclut |
|---|---|---|
| Gratuit | 0$ | 500MB BD, 1GB de stockage, 50K utilisateurs auth, 500K invocations de fonction edge |
| Pro | 25$/mois | 8GB BD, 100GB de stockage, 100K utilisateurs auth, 2M invocations de fonction edge |
| Team | 599$/mois | Support prioritaire, SOC2, sauvegardes quotidiennes, rétention de logs 28 jours |
| Enterprise | Sur demande | SLA, support dédié, contrats personnalisés |
La différence de tarification est saisissante. Le niveau gratuit de Supabase est véritablement utilisable pour les projets secondaires 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 une VPS à 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 exécutant un site web riche en contenu, l'auto-hébergement de Directus 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
- SDK TypeScript bon, s'améliorant à 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 (automation visuelle) peut remplacer la logique backend simple
- L'application d'administration est personnalisable avec des modules et mises en page personnalisés
- Transformations d'images intégrées dans l'API de livraison d'actifs
DX Supabase
- Types TypeScript auto-générés à partir de votre schéma (
supabase gen types typescript) - Développement local avec
supabase start(exécute tout dans Docker) - Edge Functions (basée 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 thorough mais parfois en retard par rapport aux derniers changements de SDK.
Quand Utiliser Chacun
Après avoir construit avec les deux en détail, voici mon cadre de décision :
Choisissez Directus quand :
- Les éditeurs de contenu ont besoin d'une interface d'administration polie
- Vous construisez un site marketing, un blog, ou une plateforme éditoriale
- Vous avez besoin de la gestion du contenu multilingue
- Votre base de données existante a besoin d'une interface de gestion
- Les flux de travail 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, marché, réseaux sociaux)
- Vous avez besoin d'authentification et de gestion des utilisateurs
- Les fonctionnalités en temps réel sont une exigence fondamentale
- Vous voulez des fonctions edge pour la logique côté serveur
- L'IA/recherche vectorielle fait partie de votre feuille de route
- 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 des utilisateurs, les données d'application, et les fonctionnalités en 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 en fait l'architecture plus propre.
Si vous essayez de déterminer la bonne architecture de backend pour votre projet, c'est littéralement ce que notre équipe fait -- n'hésitez pas à nous contacter et discuter de votre situation spécifique.
FAQ
Directus peut-il remplacer Supabase en tant que backend pour les applications web ? Partiellement. Directus vous donne une API de base de données et une gestion des utilisateurs, donc pour les applications CRUD simples, cela peut fonctionner. Mais vous perdrez le système d'authentification intégré de Supabase, les abonnements en temps réel, les fonctions edge, et le service de stockage de fichiers. Directus est optimisé pour la gestion du contenu, pas pour les charges de travail de backend d'application. Pour une application simple avec principalement des opérations de contenu, Directus convient. Pour n'importe quoi avec des flux d'authentification des utilisateurs, des fonctionnalités en temps réel, ou une logique côté serveur complexe, vous voudrez Supabase ou un BaaS similaire.
Supabase est-il bon en tant que CMS headless ? Il peut fonctionner comme un, mais nécessite un travail personnalisé important. Vous auriez besoin de construire votre propre interface d'administration pour les éditeurs de contenu, de gérer les transformations d'images séparément, d'implémenter le versioning du contenu manuellement, et de créer votre propre système d'aperçu. Les équipes ont fait cela avec des outils comme Supabase + des panneaux d'administration React personnalisés, mais vous réinventez ce que Directus (ou Strapi, ou Payload) vous donne d'emblée. Si la gestion du contenu est votre besoin principal, utilisez un CMS headless dédié.
Quel est le 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 intergiciels. 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, j'appairerais Next.js avec Directus. Pour une application SaaS avec des comptes utilisateurs, Next.js avec Supabase. Nous couvrons cela en détail dans notre pratique de développement Next.js.
Puis-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 application 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 les frais opérationnels.
Comment Directus et Supabase gèrent-ils le stockage de fichiers et les médias ? Directus dispose d'un système de gestion des actifs intégré avec des transformations d'image à la volée (redimensionner, recadrer, conversion de format). Vous téléchargez des fichiers via l'interface d'administration ou l'API, et demandez des versions transformées via des paramètres d'URL. Supabase Storage est un service de stockage de fichiers compatible S3 avec contrôle d'accès basé sur RLS. Cela gère bien les téléchargements et téléchargements mais n'a pas de transformations d'image intégrées -- vous l'appaieriez avec un service comme Imgix, Cloudinary, ou la propre transformation d'image de Supabase (qui a lancé en 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 regroupement de connexions via Supavisor et peut gérer un trafic substantiel. Leur plan Pro les bases de données peuvent être montées en échelle jusqu'à des instances de 64GB RAM. La performance de Directus dépend largement de votre configuration d'hébergement et de la base de données. Avec la mise en cache appropriée (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 meilleur 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, configurer 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 d'accueil. 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 vers l'autre plus tard ? Puisque 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 Directus et le schéma auth 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.