Directus vs Supabase en 2026: ¿Cuál Backend se Adapta a tu Proyecto?
Tu dashboard de Vercel muestra una compilación fallida. La migración de Directus expiró porque un editor de contenido cambió un campo de esquema a las 3 PM, sin aviso y sin plan de reversión. O: tus tokens de auth de Supabase expiran en mitad de sesión porque malinterpretaste la ventana de actualización en su changelog hace tres versiones. He deployado 47 proyectos en ambas plataformas desde 2023. Cada vez que un fundador pregunta "¿Directus o Supabase?", la respuesta se divide en una pregunta: ¿estás construyendo una operación de contenido o una aplicación de usuario?
Directus envuelve cualquier base de datos SQL en un CMS visual con APIs REST y GraphQL auto-generadas. Supabase comienza con PostgreSQL e incorpora autenticación, suscripciones en tiempo real, almacenamiento y funciones edge. Ambos te dan una base de datos. Ambos te dan una API. Ambos incluyen un panel. Pero Directus trata a los editores de contenido como usuarios de primera clase; Supabase trata a los desarrolladores como los únicos usuarios. Esta división determina cuál sobrevive tu lanzamiento a producción y cuál crea deuda de soporte seis meses después.
Déjame mostrarte lo que he aprendido construyendo con ambos en producción.
Filosofía e Identidad Central
Directus se llama a sí mismo una "plataforma de datos", pero seamos realistas: es un CMS headless en su núcleo. Toma tu base de datos SQL existente (PostgreSQL, MySQL, MariaDB, MS SQL, SQLite, Oracle, CockroachDB) y superpone una interfaz de gestión de contenido. El punto clave: Directus no es dueño de tu esquema de datos. Puedes apuntarlo a una base de datos existente e introspectará automáticamente las tablas y relaciones. Eso es poderoso si ya tienes una base de datos y necesitas una capa de gestión.
Supabase es un Backend-as-a-Service (BaaS). Es PostgreSQL con todas las características: autenticación, almacenamiento de archivos, suscripciones en tiempo real, funciones edge e incrustaciones de vectores para cargas de trabajo de IA. Supabase asume que estás construyendo una aplicación, no gestionando contenido. El panel está diseñado para desarrolladores, no para editores de contenido.
Esta diferencia filosófica importa más que cualquier comparación de características. Si estás construyendo un sitio web impulsado por contenido donde los editores necesitan publicar posts de blog, gestionar medios y previsualizar cambios, Directus está construido específicamente para eso. Si estás construyendo una aplicación SaaS donde los usuarios se registran, almacenan datos e interactúan en tiempo real, Supabase está construida para eso.
Pero la mayoría de los proyectos reales no son tan limpios. Y ahí es donde las cosas se ponen interesantes.
Base de Datos y Modelado de Datos
Directus
Directus utiliza un enfoque "database-first". Defines tu esquema a través de la interfaz de usuario de Directus o directamente en tu base de datos, ambos funcionan. La aplicación admin genera automáticamente formularios, relaciones y validaciones basadas en tu esquema. ¿Quieres una relación many-to-many entre articles y tags? Crea la tabla de unión (o deja que Directus la cree), y la interfaz admin automáticamente renderiza un buen selector de etiquetas.
Una cosa que aprecio: Directus no crea su propia capa de abstracción sobre tus tablas. Los nombres de tabla, nombres de columna y relaciones son exactamente lo que definiste. Las tablas del sistema (prefijadas con directus_) se sitúan junto a tus datos pero no interfieren con ellos.
Bases de datos soportadas en 2026:
- PostgreSQL 12+
- MySQL 8+
- MariaDB 10.5+
- MS SQL 2019+
- SQLite 3+
- CockroachDB 22+
- Oracle 19c+
Supabase
Supabase es PostgreSQL. Punto. Obtienes una instancia completa de Postgres con extensiones como PostGIS, pgvector, pg_cron y cientos más. La gestión de esquema ocurre a través del editor SQL del panel, su interfaz de editor de tabla, o migraciones vía Supabase CLI.
El flujo de migración en Supabase ha madurado significativamente. El CLI genera archivos de migración, y puedes usar supabase db diff para capturar cambios de esquema hechos a través del panel. En 2026, también han añadido branching: ramas de base de datos que te permiten probar cambios de esquema de forma aislada antes de fusionar a producción.
-- Ejemplo de migración de 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());
El modelo Row Level Security (RLS) es tanto el superpoder de Supabase como su curva de aprendizaje más pronunciada. Más sobre eso después.
| Característica | Directus | Supabase |
|---|---|---|
| Motor de base de datos | PostgreSQL, MySQL, MariaDB, MS SQL, SQLite, CockroachDB, Oracle | Solo PostgreSQL |
| Gestión de esquema | GUI + SQL directo | GUI + Editor SQL + Migraciones CLI |
| Branching de base de datos | No integrado (usar instancias separadas) | Sí (nativo, desde finales de 2024) |
| Extensiones | Depende de DB elegida | 60+ extensiones de Postgres |
| Soporte Vector/IA | Vía extensiones | pgvector integrado |
| Acceso directo a BD | Acceso completo siempre | Acceso completo siempre |
Comparación de Capa API
APIs de Directus
Directus auto-genera APIs REST y GraphQL desde tu esquema. La API REST sigue un patrón predecible:
# Obtener todos los artículos con relación de autor
GET /items/articles?fields=*,author.name&filter[status][_eq]=published&sort=-published_at&limit=10
El sistema de filtrado es expresivo. Puedes hacer filtros relacionales anidados, agregación e incluso consultas geográficas. El SDK envuelve todo esto bien:
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,
})
);
El SDK de TypeScript en Directus 11 (estable actual a partir de 2026) ha mejorado mucho en inferencia de tipos, aunque aún necesitas generar tipos desde tu esquema para seguridad de tipos completa.
APIs de Supabase
Supabase genera una API REST vía PostgREST y proporciona una librería cliente JavaScript que se siente más como 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 no ofrece GraphQL de forma nativa. Tenían pg_graphql por un tiempo, y sigue disponible como extensión, pero la DX principal es su cliente JS y la API REST. Honestamente, no extraño GraphQL cuando uso Supabase. La sintaxis select con uniones de relaciones cubre el 95% de casos de uso.
Un área donde Supabase se adelanta: suscripciones en tiempo real sobre WebSockets y funciones edge para lógica del lado del servidor. Directus tiene Flows (su motor de automatización), pero no es lo mismo que tener un runtime de función serverless completo.
Experiencia de Gestión de Contenido
Este es el área donde Directus absolutamente domina. Ni siquiera es cercano.
La aplicación admin de Directus está diseñada para equipos de contenido. Obtienes:
- Layouts personalizados: tableros kanban, calendarios, mapas, vistas divididas para navegación de colecciones
- Editores WYSIWYG y de bloques: El editor de bloques en Directus 11 es genuinamente bueno
- Soporte de traducción: i18n integrado con interfaces de traducción lado a lado
- Historial de revisiones: Versionado completo de contenido con vistas de diff
- Vista previa en vivo: Configura URLs de vista previa para que los editores vean cambios antes de publicar
- Permisos granulares: Acceso basado en roles hasta campos individuales
- Paneles personalizados: Paneles de análisis e información para equipos de contenido
El editor de tabla de Supabase es... un editor de tabla. Es excelente para desarrolladores que quieren una GUI para su base de datos. Es terrible para un equipo de marketing que necesita actualizar una sección héroe de página de inicio. Si estás construyendo un sitio impulsado por contenido y tus editores tocarán el backend directamente, Directus gana por defecto.
He visto equipos intentar construir una interfaz admin personalizada sobre Supabase para edición de contenido. Funciona, pero estás esencialmente construyendo un CMS desde cero. Eso es meses de trabajo que Directus te da en el primer día.
Si buscas una configuración apropiada de CMS headless para tu sitio web, nuestro equipo trabaja regularmente con Directus en proyectos de CMS headless -- es una de nuestras recomendaciones principales para sitios con mucho contenido.
Autenticación y Autorización
Auth de Supabase
Supabase Auth es un sistema de autenticación completo. Email/contraseña, enlaces mágicos, OAuth (Google, GitHub, Apple, etc.), teléfono/SMS y SSO SAML están todos integrados. Se integra directamente con Row Level Security de PostgreSQL, lo que significa que tus reglas de auth viven en la base de datos misma.
-- Solo permitir que los usuarios lean sus propios perfiles
create policy "Users can view own profile"
on profiles for select
using (auth.uid() = id);
-- Permitir que los usuarios actualicen su propio perfil
create policy "Users can update own profile"
on profiles for update
using (auth.uid() = id);
Este modelo es elegante una vez que lo entiendes, pero las políticas RLS pueden volverse complejas rápidamente. Depurar por qué una consulta retorna resultados vacíos por una política faltante es una de esas alegrías que aprendes a aceptar.
Auth de Directus
Directus maneja la autenticación para sus propios usuarios admin y también soporta SSO externo vía OpenID Connect, SAML, LDAP y OAuth2. Para usuarios finales de front-end, típicamente usarías el sistema de usuarios de Directus con roles personalizados.
El modelo de permisos en Directus es impulsado por GUI. Creas roles, luego para cada rol configuras permisos CRUD por colección, opcionalmente con reglas de nivel de campo y nivel de elemento. Es más visual y posiblemente más fácil de razonar que las políticas RLS, pero menos flexible para lógica de aplicación compleja.
Para aplicaciones donde la auth de usuario final es la preocupación primaria (piensa en aplicaciones SaaS), el sistema de auth de Supabase es significativamente más maduro. Para gestionar acceso de equipo de contenido, el sistema de roles de Directus está mejor adaptado.
Capacidades en Tiempo Real
El motor en tiempo real de Supabase es listo para producción y maneja presencia, broadcast y escuchas de cambios de base de datos:
const channel = supabase
.channel('articles')
.on('postgres_changes', {
event: 'INSERT',
schema: 'public',
table: 'articles',
}, (payload) => {
console.log('Nuevo artículo:', payload.new);
})
.subscribe();
Esto es genuinamente útil para aplicaciones de chat, herramientas colaborativas, paneles en vivo y sistemas de notificación.
Directus añadió soporte WebSocket y tiene suscripciones en tiempo real vía su endpoint de suscripción GraphQL. Funciona, pero no es el mismo nivel de madurez. Directus Realtime está bien para escenarios "notifícame cuando el contenido cambia" pero no está construido para aplicaciones colaborativas de alta frecuencia.
Auto-hospedaje e Infraestructura
Ambas herramientas son código abierto y pueden ser auto-hospedadas.
Directus es una aplicación Node.js distribuida como paquete npm e imagen Docker. Auto-hospedarse es directo: apunta a tu base de datos, configura variables de ambiente, y estás ejecutando. La he deployado en Railway, Fly.io, AWS ECS e instancias VPS sin problemas.
Supabase auto-hospedarse es más involucrado. La pila completa incluye PostgreSQL, PostgREST, GoTrue (auth), Realtime, Storage, Kong (API gateway) y el panel Studio. Su configuración Docker Compose funciona para desarrollo, pero auto-hospedarse en producción requiere más conocimiento operativo. La mayoría de equipos optan por la plataforma hospedada de Supabase y se ahorran la sobrecarga operativa.
| Aspecto | Directus Auto-hospedado | Supabase Auto-hospedado |
|---|---|---|
| Complejidad | Bajo-medio (única app Node.js + BD) | Alto (7+ servicios) |
| Soporte Docker | Imagen oficial, simple | Docker Compose, complejo |
| Recursos mín. | 1 vCPU, 1GB RAM | 4 vCPU, 8GB RAM (todos servicios) |
| Guías comunitarias | Extensivas | Creciente pero menos maduro |
| Alternativa gestionada | Directus Cloud | Plataforma Supabase |
Desglose de Precios 2026
Hablemos de dinero. Estos son precios actuales publicados a principios de 2026.
Directus Cloud
| Plan | Precio | Incluye |
|---|---|---|
| Community (auto-hospedado) | Gratis | Todo, auto-gestionado |
| Standard | $99/mes | 1 proyecto, 100K solicitudes API, 5GB activos |
| Professional | $399/mes | Dominio personalizado, más recursos, soporte prioritario |
| Enterprise | Personalizado | SSO, SLA, infra dedicada |
Plataforma Supabase
| Plan | Precio | Incluye |
|---|---|---|
| Free | $0 | 500MB BD, 1GB almacenamiento, 50K usuarios auth, 500K invocaciones función edge |
| Pro | $25/mes | 8GB BD, 100GB almacenamiento, 100K usuarios auth, 2M invocaciones función edge |
| Team | $599/mes | Soporte prioritario, SOC2, backups diarios, retención log 28 días |
| Enterprise | Personalizado | SLA, soporte dedicado, contratos personalizados |
La diferencia de precios es marcada. El tier gratuito de Supabase es genuinamente usable para proyectos paralelos e MVPs. El punto de entrada de Directus Cloud a $99/mes es empinado para experimentación, pero auto-hospedarse en Directus en un VPS de $5/mes funciona perfectamente para proyectos pequeños.
Para una startup construyendo una aplicación, el plan Pro de Supabase por $25/mes te da mucho. Para un negocio ejecutando un sitio web con mucho contenido, Directus auto-hospedado más una instancia PostgreSQL gestionada podría costar $20-50/mes total.
Experiencia del Desarrollador
Construyo muchos proyectos Next.js y sitios Astro, así que la integración de frameworks me importa mucho.
DX de Directus
- SDK de TypeScript es bueno, mejorando con cada versión
- Los tipos de esquema pueden ser generados desde tu instancia
- Sistema de extensiones para endpoints personalizados, hooks, paneles e interfaces
- Flows (automatización visual) pueden reemplazar lógica de backend simple
- La aplicación admin es personalizable con módulos y layouts personalizados
- Transformaciones de imagen integradas en la API de entrega de activos
DX de Supabase
- Tipos de TypeScript auto-generados desde tu esquema (
supabase gen types typescript) - Desarrollo local con
supabase start(ejecuta todo en Docker) - Edge Functions (basadas en Deno) para lógica del lado del servidor
- Búsqueda de vectores integrada con pgvector para características de IA
- Flujo impulsado por CLI con migraciones, branching e CI/CD
- Integración Vercel/Netlify para sincronización de variables de ambiente
Ambos tienen documentación sólida. La documentación de Supabase está particularmente bien organizada con guías específicas del framework (Next.js, Nuxt, SvelteKit, Flutter, etc.). La documentación de Directus es exhaustiva pero a veces se queda atrás de los cambios más recientes del SDK.
Cuándo Usar Cada Uno
Después de construir extensivamente con ambos, aquí está mi marco de decisión:
Elige Directus cuando:
- Los editores de contenido necesitan una interfaz admin pulida
- Estás construyendo un sitio de marketing, blog o plataforma editorial
- Necesitas gestión de contenido multi-idioma
- Tu base de datos existente necesita una UI de gestión
- Los flujos de contenido (borradores, revisiones, aprobaciones) son importantes
- Quieres usar MySQL, MariaDB u otra base de datos que no sea PostgreSQL
Elige Supabase cuando:
- Estás construyendo una aplicación cara al usuario (SaaS, marketplace, social)
- Necesitas autenticación y gestión de usuarios
- Las características en tiempo real son un requisito central
- Quieres funciones edge para lógica del lado del servidor
- IA/búsqueda de vectores es parte de tu hoja de ruta
- Quieres el camino más rápido desde idea a aplicación deployada
Usa ambos cuando:
Esto no es loco. He construido sistemas donde Supabase maneja auth de usuario, datos de aplicación y características en tiempo real, mientras Directus gestiona el contenido del sitio de marketing, blog y documentación. Pueden compartir la misma instancia PostgreSQL o usar bases de datos separadas. La separación de responsabilidades en realidad hace la arquitectura más limpia.
Si estás intentando descubrir la arquitectura de backend correcta para tu proyecto, eso es literalmente lo que hace nuestro equipo -- no dudes en comunicarte y hablar a través de tu situación específica.
FAQ
¿Puede Directus reemplazar a Supabase como backend para aplicaciones web?
Parcialmente. Directus te da una API de base de datos y gestión de usuarios, así que para aplicaciones CRUD simples, puede funcionar. Pero te perderás el sistema de auth integrado de Supabase, suscripciones en tiempo real, funciones edge y servicio de almacenamiento de archivos. Directus está optimizado para gestión de contenido, no cargas de trabajo de backend de aplicación. Para una aplicación simple con principalmente operaciones de contenido, Directus está bien. Para cualquier cosa con flujos de autenticación de usuario, características en tiempo real o lógica del lado del servidor compleja, querrás Supabase o un BaaS similar.
¿Es Supabase bueno como CMS headless?
Puede funcionar como uno, pero requiere trabajo personalizado significativo. Necesitarías construir tu propia interfaz admin para editores de contenido, manejar transformaciones de imagen por separado, implementar versionado de contenido manualmente y crear tu propio sistema de vista previa. Los equipos han hecho esto con herramientas como Supabase + paneles admin React personalizados, pero estás reinventando lo que Directus (o Strapi, o Payload) te da de forma inmediata. Si la gestión de contenido es tu necesidad principal, usa un CMS headless dedicado.
¿Cuál es mejor para una aplicación Next.js?
Ambos se integran bien con Next.js. Supabase tiene ayudantes oficiales de Next.js (@supabase/ssr) que manejan la gestión de cookies de auth en componentes de servidor y middleware. Directus funciona muy bien con Next.js también: obtienes datos vía el SDK en componentes de servidor y usa ISR o SSG para rendimiento. Para un sitio de marketing con blog, emparearía Next.js con Directus. Para una aplicación SaaS con cuentas de usuario, Next.js con Supabase. Cubrimos esto en profundidad en nuestra práctica de desarrollo Next.js.
¿Puedo auto-hospedarse tanto Directus como Supabase de forma gratuita?
Sí. Ambos son código abierto con licencias permisivas (Directus usa licencia BSL 1.1 que se convierte a Apache 2.0 después de 3 años; Supabase usa Apache 2.0 para la mayoría de componentes). Directus es más fácil de auto-hospedarse: es una única aplicación Node.js. Auto-hospedarse Supabase requiere ejecutar múltiples servicios (PostgreSQL, PostgREST, GoTrue, Realtime, Storage, Kong). Para Supabase, la mayoría de desarrolladores usan la plataforma hospedada y se ahorran la sobrecarga operativa.
¿Cómo manejan Directus y Supabase el almacenamiento y gestión de archivos?
Directus tiene un sistema de gestión de activos integrado con transformaciones de imagen sobre la marcha (redimensionar, recortar, conversión de formato). Subes archivos a través de la interfaz admin o API, y solicitas versiones transformadas vía parámetros URL. Supabase Storage es un servicio de almacenamiento de archivos compatible con S3 con control de acceso basado en RLS. Maneja cargas y descargas bien pero no tiene transformaciones de imagen integradas: lo emparajarías con un servicio como Imgix, Cloudinary, o la transformación de imagen de Supabase (que se lanzó como beta en 2025).
¿Qué hay sobre rendimiento y escalabilidad?
La infraestructura de Supabase está construida sobre AWS con agrupamiento de conexión vía Supavisor y puede manejar tráfico sustancial. Su plan Pro bases de datos pueden escalarse hasta instancias de 64GB RAM. El rendimiento de Directus depende en gran medida de tu configuración de hospedaje y base de datos. Con caching apropiado (Redis, CDN), Directus maneja tráfico alto bien, pero eres responsable de la infraestructura. En benchmarks, ambos pueden manejar miles de solicitudes por segundo con recursos apropiados. El cuello de botella es casi siempre la base de datos, no la capa API.
¿Es Directus o Supabase mejor para un equipo con miembros no técnicos?
Directus, sin pregunta. Su interfaz admin está diseñada para no-desarrolladores. Puedes crear paneles personalizados, configurar flujos de aprobación de contenido y restringir acceso por rol, todo sin escribir código. El panel de Supabase es una herramienta de desarrollador. Tu equipo de marketing no va a escribir SQL para actualizar una página de destino. Si miembros no técnicos del equipo necesitan gestionar datos, la UI de Directus es la opción correcta.
¿Puedo migrar de uno al otro después?
Ya que ambos son compatibles con PostgreSQL (y Directus soporta bases de datos adicionales), la migración es viable pero no trivial. Si estás en Directus con PostgreSQL y quieres añadir Supabase, podrías apuntar Supabase a tu base de datos existente o migrar los datos. Las tablas del sistema de Directus y el esquema de auth de Supabase necesitarían coexistir o ser separados. Ir en la otra dirección: añadir Directus sobre una base de datos de Supabase, es en realidad un patrón bien documentado. Directus puede introspeccionar tablas existentes y crear su capa de gestión sin modificar tu esquema de datos.