
Przewodnik po Directus CMS: Headless CMS oparty na bazie danych, tworzony z myślą o programistach
Większość headless CMS-ów wymaga budowania modelu danych wewnątrz swojego systemu. Directus odwraca to podejście — nakłada się na istniejącą bazę danych SQL i udostępnia natychmiastowe interfejsy API REST oraz GraphQL, nie ingerując w Twój schemat. Dzięki około 34,5 tys. gwiazdek na GitHubie i wdrożeniom w firmach takich jak Tripadvisor, Adobe czy Mercedes-Benz jest to jedno z najbardziej zaawansowanych rozwiązań open source wśród najlepszych headless CMS-ów w 2026 roku.
| Cecha | Szczegóły |
|---|---|
| Typ | Headless CMS typu open source |
| Architektura | Oparta na bazie danych (nakłada się na istniejące bazy danych SQL) |
| Bazy danych | PostgreSQL, MySQL, MariaDB, SQLite, OracleDB, CockroachDB, MS-SQL |
| Interfejsy API | REST + GraphQL (jednocześnie) |
| Self-hosting | Bezpłatny przy przychodach poniżej 5 mln USD (licencja MIT) |
| Chmura | Od 25 USD miesięcznie |
| Funkcje AI | Serwer MCP, Asystent AI (obsługa wielu dostawców) |
| Edycja zespołowa | Natywna od wersji 11.15 |
| Najlepszy dla | Zespołów z istniejącymi bazami danych, projektów opartych na API |
| Niezbyt odpowiedni dla | Wizualnego tworzenia stron, baz NoSQL, prostych blogów |
| GitHub | Około 34,5 tys. gwiazdek |
| Najnowsza wersja | v11.16 (kwiecień 2026) |
Czym jest Directus CMS?
Directus to opensource'owy headless CMS, który otacza dowolną istniejącą bazę danych SQL natychmiastowymi interfejsami API REST i GraphQL. W przeciwieństwie do Strapi czy Payload, Directus nie tworzy własnego schematu bazy danych — odwzorowuje Twój. Obsługuje 7 baz danych, w tym PostgreSQL, MySQL, MariaDB, SQLite, OracleDB, CockroachDB i MS-SQL, i jest bezpłatny dla organizacji o przychodach poniżej 5 mln USD, zgodnie z oficjalną dokumentacją Directus.
Pomyśl o nim jak o inteligentnej warstwie, która leży na wierzchu Twojej bazy danych. Przynosisz istniejącą bazę danych PostgreSQL z 50 tabelami, wskazujesz ją w Directus i w ciągu kilku minut masz pełny interfejs administracyjny, kontrolę dostępu opartą na rolach oraz endpointy REST i GraphQL. Bez skryptów migracyjnych. Bez restrukturyzacji danych.
Właśnie to w praktyce oznacza „database-first" (najpierw baza danych) i zasadniczo różni się to od podejścia „code-first" (najpierw kod) stosowanego przez Strapi (gdzie definiujesz typy treści, które generują tabele bazy danych) czy podejścia osadzonego w frameworku, jak w Payload CMS (gdzie CMS żyje wewnątrz Twojej aplikacji Next.js).
Architektura oparta na bazie danych (Database-First)
Kiedy po raz pierwszy podłączyliśmy Directus do istniejącej bazy PostgreSQL w projekcie klienckim, zaskoczyło nas, jak niewiele wymagało to konfiguracji. Directus introspekcję schematu bazy danych — tabele stają się „kolekcjami", kolumny stają się „polami" — i buduje swój interfejs administracyjny na podstawie tego, co już istnieje.
Oznacza to, że Twoje dane nigdy nie są zamknięte w zastrzeżonym formacie. Jeśli jutro zdecydujesz się zrezygnować z Directus, Twoja baza danych nadal będzie standardową bazą SQL. Spróbuj zrobić to samo z Contentful czy Sanity, gdzie Twoje treści przechowywane są na ich serwerach w ich własnym formacie.
Directus to również nie tylko CMS. Zespół pozycjonuje go jako kompozytowalną platformę danych — ludzie używają go jako BaaS (Backend as a Service), do wewnętrznych paneli administracyjnych i niestandardowych dashboardów. Zastosowanie jako CMS jest najpopularniejsze, ale architektura wspiera znacznie więcej.
Kluczowe funkcje Directus
Directus oferuje podwójne API (REST i GraphQL), szczegółowe uprawnienia oparte na rolach, wbudowaną automatyzację Flows, Data Studio z obsługą przeciągania i upuszczania, zarządzanie zasobami cyfrowymi oraz natywną obsługę i18n dla ponad 50 języków. Od wersji 11.15 zawiera edycję zespołową oraz Asystenta AI jako natywne funkcje, a nie wtyczki firm trzecich.
Oto, co jest najważniejsze, jeśli rozważasz Directus do swojego projektu:
Podwójne API REST i GraphQL
Oba API są dostępne jednocześnie z tych samych danych, przy zerowej konfiguracji. Nie wybierasz jednego lub drugiego — otrzymujesz oba. Twój zespół mobilny może korzystać z REST, podczas gdy frontend internetowy używa GraphQL. API REST stosuje przewidywalny wzorzec (/items/{collection}), a endpoint GraphQL znajduje się pod adresem /graphql.
Flows i automatyzacja
Flows to event-driven system automatyzacji Directus, wbudowany bezpośrednio w interfejs Data Studio. Przepływy pracy możesz wywoływać zdarzeniami CRUD (utworzenie, aktualizacja lub usunięcie elementu), harmonogramami (w stylu cron) lub webhookami. Operacje obejmują wysyłanie e-maili, wykonywanie żądań HTTP, uruchamianie własnego kodu JavaScript oraz przekształcanie danych.
Dla zespołów tworzących z wykorzystaniem AI Directus ma nawet natywny serwer Model Context Protocol (MCP) — przewodnik, ale o tym więcej w sekcji o v11.
Rozszerzenia i dostosowywanie
System rozszerzeń obsługuje hooki (serwerowe programy obsługi zdarzeń), niestandardowe endpointy, panele UI, pełne moduły oraz węzły operacji dla Flows. Rozszerzenia są tworzone przy użyciu Vue.js dla frontendu i czystego Node.js dla backendu. Wydanie 11.0 zrestrukturyzowało rozszerzenia z folderów opartych na typach do czystszego formatu pakietowego.
Oto jak Directus wypada na tle konkurencji pod względem funkcji:
| Funkcja | Directus | Strapi | Payload | Sanity |
|---|---|---|---|---|
| Obsługa baz danych | 7 baz danych SQL | PostgreSQL, SQLite | MongoDB, PostgreSQL | Hostowana (własnościowa) |
| Typ API | REST + GraphQL | REST (wtyczka GraphQL) | Lokalne API + REST + GraphQL | GROQ + GraphQL |
| Własny hosting | Tak (bezpłatnie <5 mln USD) | Tak (bezpłatnie) | Tak (bezpłatnie) | Nie |
| Kreator wizualny | Data Studio (zorientowane na dane) | Content-Type Builder | Live Preview | Sanity Studio |
| i18n | Natywna (50+ języków) | Oparta na wtyczkach | Na poziomie pól | Na poziomie dokumentów |
| Automatyzacja | Flows (wbudowane) | Hooki cyklu życia | Hooki + Jobs | Webhooki oparte na GROQ |
| Model cenowy | Oparty na przychodach (próg 5 mln USD) | Oparty na stanowiskach | Darmowy + Cloud | Oparty na zużyciu |
Co nowego w Directus v11 (2025–2026)
Directus v11 wprowadził natywną obsługę serwera MCP (v11.13), Asystenta AI obsługującego OpenAI, Anthropic i Gemini (v11.14), wspólną edycję ze wskaźnikami obecności na żywo (v11.15) oraz globalne wersje robocze z uprawnieniami do wdrażania opartymi na rolach (v11.16). To wszystko wbudowane funkcje, a nie rozszerzenia tworzone przez społeczność.
To właśnie w tym obszarze Directus rozwija się najszybciej i jest to sekcja, którą większość konkurencji całkowicie pomija. Tylko jeden z sześciu najwyżej notowanych przewodników porusza którykolwiek z tych tematów.
Serwer MCP i asystent AI
Wersja 11.13 uczyniła Directus jednym z pierwszych CMS-ów z natywnym serwerem MCP. Jeśli korzystasz z Claude, ChatGPT lub dowolnego narzędzia AI zgodnego z MCP, może ono zarządzać Twoją treścią w Directus bezpośrednio — odczytywać kolekcje, tworzyć elementy, aktualizować pola, a wszystko to z poszanowaniem Twoich uprawnień RBAC. Jeśli MCP jest dla Ciebie nowością, nasz przewodnik po Model Context Protocol (MCP) szczegółowo wyjaśnia ten protokół.
Asystent AI (v11.14) jest odrębny od MCP — to wbudowany interfejs czatu w Data Studio, który obsługuje OpenAI, Anthropic, Gemini, a nawet lokalne modele za pośrednictwem Ollamy. W wersji 11.16 zyskał on multimodalność: możesz przesyłać obrazy i pliki PDF bezpośrednio do czatu AI w celu ich przetworzenia.
Współpraca przy edycji i wersje robocze
Współpraca przy edycji została wprowadzona w wersji 11.15 wraz ze wskaźnikami obecności w czasie rzeczywistym (widzisz, kto jeszcze edytuje ten sam element) oraz blokadą na poziomie pól, aby zapobiegać konfliktom. W tej samej wersji dodano moduł wdrażania Vercel z uprawnieniami do wdrażania opartymi na rolach.
Wersja 11.16 rozwinęła staging treści o globalne wersje robocze. Każdy element z wersjonowaniem automatycznie otrzymuje kopię roboczą. Edytorzy mogą podglądać zmiany w odniesieniu do wersji opublikowanej i promować wersje robocze, gdy są gotowe. Uprawnienia do wdrażania oparte na rolach oznaczają, że zespół treści może przygotowywać zmiany bez ryzyka przypadkowego wypchnięcia ich na produkcję.
| Wersja | Data | Kluczowe funkcje |
|---|---|---|
| v11.0 | 2024 | Nowy system rozszerzeń, format pakietowy |
| v11.13 | listopad 2025 | Natywna obsługa serwera MCP |
| v11.14 | grudzień 2025 | Asystent AI (wielu dostawców), interfejs nagłówka |
| v11.15 | luty 2026 | Współpraca przy edycji GA, Asystent AI GA, wdrożenia Vercel |
| v11.16 | kwiecień 2026 | Globalne wersje robocze, multimodalny AI, wdrażanie oparte na rolach |
Pierwsze kroki z Directus (konfiguracja Docker)
Directus można uruchomić lokalnie za pomocą Dockera w mniej niż 2 minuty. Utwórz plik docker-compose.yml z obrazem directus/directus, ustaw połączenie z bazą danych i dane logowania administratora jako zmienne środowiskowe, a następnie uruchom docker compose up. Directus uruchomi się pod adresem localhost:8055.
Konfiguracja Dockera zajęła nam mniej niż 2 minuty od zimnego startu. Oto kompletny plik docker-compose.yml zawierający PostgreSQL — nie tylko kontener Directus, ale cały stos:
# docker-compose.yml
version: \"3\"
services:
database:
image: postgis/postgis:16-3.4-alpine
environment:
POSTGRES_USER: directus
POSTGRES_PASSWORD: directus
POSTGRES_DB: directus
volumes:
- directus_data:/var/lib/postgresql/data
directus:
image: directus/directus:11.16
ports:
- \"8055:8055\"
depends_on:
- database
environment:
KEY: \"your-random-key-here\"
SECRET: \"your-random-secret-here\"
ADMIN_EMAIL: \"[email protected]\"
ADMIN_PASSWORD: \"change-me-please\"
DB_CLIENT: \"pg\"
DB_HOST: \"database\"
DB_PORT: \"5432\"
DB_DATABASE: \"directus\"
DB_USER: \"directus\"
DB_PASSWORD: \"directus\"
volumes:
- directus_uploads:/directus/uploads
volumes:
directus_data:
directus_uploads:Run it:
docker compose up -dOtwórz http://localhost:8055, zaloguj się przy użyciu ustawionych danych administratora i jesteś w Data Studio. Stąd możesz tworzyć kolekcje (tabele), definiować pola (kolumny) i od razu zacząć zarządzać treścią. Zmienne środowiskowe KEY oraz SECRET służą do generowania tokenów JWT — w środowisku produkcyjnym użyj losowych ciągów znaków, a nie powyższych wartości zastępczych.
Odpytywanie danych za pomocą Directus SDK
Directus JavaScript SDK zapewnia typowane bezpieczeństwo dostępu do danych zarówno przez REST, jak i GraphQL. Zainstaluj @directus/sdk, utwórz klienta za pomocą createDirectus() i użyj readItems(), aby pobierać kolekcje z wbudowanym filtrowaniem, sortowaniem i wyborem pól.
Wzorzec kompozycyjny SDK wydał mi się intuicyjny po pracy z bibliotekami takimi jak klient Supabase. Zaczynasz od bazowego klienta i dodajesz możliwości, komponując funkcje:
// lib/directus.ts
import { createDirectus, rest, readItems, createItem } from '@directus/sdk';
const client = createDirectus('http://localhost:8055').with(rest());
// Fetch published articles with specific fields
const articles = await client.request(
readItems('articles', {
fields: ['id', 'title', 'slug', 'content', 'author.name'],
filter: {
status: { _eq: 'published' }
},
sort: ['-date_published'],
limit: 10
})
);Tworzenie elementów odbywa się według tego samego wzorca:
// Create a new article
const newArticle = await client.request(
createItem('articles', {
title: 'My New Post',
slug: 'my-new-post',
content: '<p>Hello from Directus.</p>',
status: 'draft'
})
);W przypadku uwierzytelniania wybierasz między staticToken() (do komunikacji serwer-serwer) a authentication() (do aplikacji面向用户 z przepływami logowania):
import { createDirectus, rest, staticToken } from '@directus/sdk';
// Server-side with static token
const client = createDirectus('http://localhost:8055')
.with(staticToken('your-api-token'))
.with(rest());Przykłady REST API
Każda metoda SDK ma swój odpowiednik w postaci endpointu REST. Jeśli wolisz pracować bezpośrednio z curl lub fetch:
# Pobierz opublikowane artykuły
curl "http://localhost:8055/items/articles?filter[status][_eq]=published&sort=-date_published&limit=10&fields=id,title,slug"
# Utwórz nowy element
curl -X POST "http://localhost:8055/items/articles" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title": "My Post", "status": "draft"}'Zapytania GraphQL
Te same dane są dostępne przez GraphQL pod adresem /graphql:
query {
articles(
filter: { status: { _eq: "published" } }
sort: ["-date_published"]
limit: 10
) {
id
title
slug
content
author {
name
}
}
}Nie musisz osobno konfigurować ani włączać GraphQL — jest on zawsze dostępny obok REST.
Directus i Next.js (integracja z frameworkiem)
Połączenie Directus z Next.js sprowadza się do trzech kroków: zainstaluj @directus/sdk, utwórz klienta w lib/directus.ts i pobieraj dane w komponentach serwerowych za pomocą readItems(). Directus zwraca surowy JSON, więc masz pełną kontrolę nad renderowaniem bez żadnych komponentów specyficznych dla dostawcy.
To najbardziej przejrzysta część pracy z Directus. Nie ma żadnego specjalnego adaptera dla frameworka, żadnych komponentów React specyficznych dla Directus, żadnej wtyczki builda. To po prostu pobieranie danych. Jeśli pracowałeś z jakimkolwiek API REST w Next.js, już wiesz, jak to działa. Aby uzyskać kontekst dotyczący wyboru frameworka, zobacz nasze porównanie Next.js i Remix.
Najpierw utwórz współdzielonego klienta (to ten sam plik co w sekcji o SDK, ale skonfigurowany dla Twojej wdrożonej instancji):
// lib/directus.ts
import { createDirectus, rest, staticToken, readItems } from '@directus/sdk';
const directus = createDirectus(process.env.DIRECTUS_URL!)
.with(staticToken(process.env.DIRECTUS_TOKEN!))
.with(rest());
export default directus;
export { readItems };Następnie użyj go w komponencie serwerowym — bez useEffect, bez stanów ładowania, po prostu async/await:
// app/blog/page.tsx
import directus, { readItems } from '@/lib/directus';
export default async function BlogPage() {
const posts = await directus.request(
readItems('posts', {
fields: ['id', 'title', 'slug', 'excerpt', 'date_published'],
filter: { status: { _eq: 'published' } },
sort: ['-date_published'],
})
);
return (
<main>
<h1>Blog</h1>
{posts.map((post) => (
<article key={post.id}>
<h2><a href={`/blog/${post.slug}`}>{post.title}</a></h2>
<p>{post.excerpt}</p>
<time>{post.date_published}</time>
</article>
))}
</main>
);
}To wszystko. Bez uzależnienia od dostawcy. To samo podejście działa z Astro, Nuxt, SvelteKit lub dowolnym frameworkiem, który potrafi wykonywać żądania HTTP. Oficjalna dokumentacja Directus zawiera przewodniki dla konkretnych frameworków, w tym Astro i Nuxt, jeśli ich potrzebujesz, ale schemat jest identyczny: utwórz klienta, wywołaj readItems(), wyrenderuj.
Cennik i licencjonowanie Directus CMS (2026)
Directus można samodzielnie hostować za darmo na licencji MIT w przypadku organizacji o rocznym przychodzie lub finansowaniu poniżej 5 mln USD. Powyżej 5 mln USD do użytku produkcyjnego wymagana jest licencja komercyjna. Directus Cloud zaczyna się od 25 USD/mies. (plan Starter), a plany Professional kosztują od 49 do 499 USD/mies., zgodnie z ich stroną cennikową.
Próg przychodów 5 mln USD
To najważniejszy fakt biznesowy dotyczący Directus, a większość poradników albo go pomija, albo całkowicie o nim milczy. Oto jak to działa:
- Poniżej 5 mln USD rocznego przychodu lub łącznego finansowania: Za darmo na zawsze. Licencja MIT. Hostuj samodzielnie gdziekolwiek chcesz. Bez ograniczeń funkcjonalnych.
- Powyżej 5 mln USD w środowisku produkcyjnym: Potrzebujesz licencji komercyjnej. Skontaktuj się z działem sprzedaży Directus, aby poznać cennik.
- Rozwój i testy: Zawsze za darmo, niezależnie od wielkości firmy. Próg dotyczy wyłącznie wdrożeń produkcyjnych.
Kwota 5 mln USD obejmuje finansowanie venture, a nie tylko przychód. Tak więc startup na etapie seed z 6 mln USD finansowania technicznie przekracza próg. W praktyce Directus nie egzekwuje tego rygorystycznie wobec firm na wczesnym etapie, ale powinieneś uwzględnić to w swoim planowaniu.
Plany chmurowe
Jeśli nie chcesz zarządzać infrastrukturą, Directus Cloud zajmuje się hostingiem, kopiami zapasowymi i aktualizacjami:
- Starter: 25 USD/mies., odpowiedni dla małych projektów i stron osobistych
- Professional: 49–499 USD/mies., skaluje się wraz z pojemnością, transferem i transformacjami zasobów
- Enterprise: indywidualna wycena, SLA, dedykowana infrastruktura, priorytetowe wsparcie
Bez licencjonowania za użytkownika. Cały Twój zespół korzysta z tego samego planu. Porównaj to z Contentful, który pobiera opłaty za użytkownika (zobacz nasze zestawienie cen Contentful), lub Sanity, które nalicza opłaty na podstawie wykorzystania API i przepustowości datasetu.
| CMS | Darmowy poziom | Plany płatne od | Model cenowy | Self-hosting |
|---|---|---|---|---|
| Directus | Tak (przychód <5 mln USD) | 25 USD/mies. (Cloud) | Oparty na przychodach | Tak |
| Strapi | Tak (w pełni open-source) | 29 USD/mies. (Cloud) | Oparty na użytkownikach | Tak |
| Payload | Tak (w pełni open-source) | Cloud (beta) | Do ustalenia | Tak |
| Contentful | Tak (ograniczony) | 300 USD/mies. | Użytkownicy + wykorzystanie | Nie |
| Sanity | Tak (ograniczony) | 15 USD/mies. | Oparty na wykorzystaniu | Nie |
Directus vs Strapi vs Payload: Jak wypadają w porównaniu
Directus otacza istniejące bazy danych bez migracji, Strapi generuje własny schemat na podstawie typów treści, a Payload osadza się bezpośrednio w Twojej aplikacji Next.js. Directus obsługuje 7 baz danych, Strapi obsługuje 2, a Payload obsługuje 2. Wszystkie trzy są open-source, ale ich filozofie znacznie się różnią.
Po zbudowaniu projektów zarówno w Strapi, jak i Directus, największą różnicą jest sposób, w jaki podchodzą do Twojej bazy danych. W Strapi definiujesz typy treści w panelu administratora lub w kodzie, a Strapi tworzy i zarządza tabelami bazy danych za Ciebie. W Directus to baza danych jest źródłem prawdy — Directus odczytuje ją i dostosowuje się.
| Funkcja | Directus | Strapi | Payload |
|---|---|---|---|
| Architektura | Database-first (otacza istniejącą BD) | Code-first (generuje BD z modeli) | Osadzony w frameworku (działa w Next.js) |
| Bazy danych | PostgreSQL, MySQL, MariaDB, SQLite, OracleDB, CockroachDB, MS-SQL | PostgreSQL, SQLite | MongoDB, PostgreSQL |
| API | REST + GraphQL (oba natywne) | REST (GraphQL przez wtyczkę) | Local API + REST + GraphQL |
| Panel administratora | Data Studio (Vue.js) | Content Manager (React) | Admin Panel (React, osadzony) |
| Gwiazdki na GitHub | ~34,5 tys. | ~68 tys. | ~33 tys. |
| Hosting w chmurze | Directus Cloud (od 25 USD/mies.) | Strapi Cloud (od 29 USD/mies.) | Payload Cloud (beta) |
Kiedy wybrać Directus: Masz istniejącą bazę danych, chcesz mieć od razu REST+GraphQL lub potrzebujesz obsługi mniej popularnych baz danych, takich jak OracleDB czy CockroachDB.
Kiedy wybrać Strapi: Zależy Ci na największym ekosystemie i społeczności, wolisz definiować typy treści przez interfejs lub zaczynasz od zera, bez istniejącej bazy danych. Przeczytaj nasz pełny przewodnik po Strapi, aby poznać szczegóły.
Kiedy wybrać Payload: Chcesz, aby CMS był osadzony bezpośrednio w Twojej aplikacji Next.js, wolisz konfigurację opartą przede wszystkim na TypeScript lub potrzebujesz Local API, które całkowicie pomija HTTP. Zobacz nasze szczegółowe omówienie Payload CMS, aby uzyskać pełny obraz.
Kiedy NIE używać Directus
Directus nie będzie odpowiednim wyborem, jeśli potrzebujesz wizualnego kreatora stron, ściśle zintegrowanego frameworka Next.js lub backendu NoSQL. Wprowadza również zbędny narzut w prostych projektach, gdzie wystarczyłby CMS oparty na plikach płaskich lub WordPress.
Widzieliśmy zespoły, które wybierały Directus, choć nie powinny były tego robić, a schemat zwykle jest jeden z poniższych:
- Potrzebujesz wizualnego kreatora stron. Data Studio w Directus doskonale sprawdza się w zarządzaniu danymi strukturalnymi, ale nie jest kreatorem typu przeciągnij i upuść. Jeśli edycja wizualna jest Twoim priorytetem, przyjrzyj się Storyblok — zobacz nasz przewodnik po Storyblok, aby dowiedzieć się, jak wypada w porównaniu.
- Postawiłeś na NoSQL. Directus z założenia obsługuje wyłącznie SQL. Jeśli Twoje dane znajdują się w MongoDB, naturalnym wyborem będzie Payload CMS.
- Twój projekt to prosty blog. Uruchamianie Dockera, PostgreSQL i Directus na potrzeby osobistego bloga to poważna przesada. WordPress, Astro z plikami markdown, a nawet Ghost pozwolą Ci publikować w ułamku tego czasu.
- Chcesz mieć CMS w frameworku. Jeśli chcesz, aby Twój CMS funkcjonował wewnątrz bazy kodu Next.js jako pełnoprawny element, Payload robi to natywnie. Directus zawsze pozostaje osobną usługą.
- Jesteś dużą organizacją. Jeśli przychody Twojej firmy przekraczają próg 5 mln USD, będziesz potrzebować licencji komercyjnej do użytku produkcyjnego. Zestaw ten koszt z w pełni otwartoźródłowymi alternatywami, takimi jak Strapi czy Payload, gdzie samodzielny hosting jest darmowy niezależnie od przychodów.
Żadna z tych kwestii nie jest wadą — to świadome decyzje projektowe. Directus to platforma danych, a nie kreator stron internetowych. Zrozumienie tej różnicy oszczędzi Ci miesięcy frustracji.
Najczęściej zadawane pytania
Czym jest Directus CMS?
Directus to opensource'owy headless CMS, który otacza dowolną istniejącą bazę danych SQL, udostępniając natychmiastowe interfejsy API REST i GraphQL. Obsługuje PostgreSQL, MySQL, MariaDB, SQLite, OracleDB, CockroachDB oraz MS-SQL. W przeciwieństwie do tradycyjnych systemów CMS Directus nie tworzy własnego schematu — automatycznie odczytuje i odwzorowuje istniejącą strukturę bazy danych.
Czy Directus jest naprawdę darmowy?
Directus można bezpłatnie hostować samodzielnie na licencji MIT w przypadku organizacji, których roczny przychód lub łączne finansowanie nie przekracza 5 mln USD. Powyżej tego progu do użytku produkcyjnego wymagana jest licencja komercyjna. Środowiska programistyczne i testowe są zawsze darmowe. Directus Cloud, ich zarządzany hosting, zaczyna się od 25 USD miesięcznie.
Czym Directus różni się od Strapi?
Directus stawia na bazę danych — otacza istniejącą bazę SQL, nie modyfikując jej schematu. Strapi bazuje na kodzie — definiujesz typy treści, a Strapi generuje tabele w bazie danych. Directus obsługuje 7 baz danych, podczas gdy Strapi obsługuje 2. Oba oferują interfejsy REST API, ale Directus zawiera natywny GraphQL, natomiast Strapi wymaga wtyczki.
Jakie bazy danych obsługuje Directus?
Directus obsługuje siedem baz danych SQL: PostgreSQL, MySQL, MariaDB, SQLite, OracleDB, CockroachDB i MS-SQL. Łączy się z istniejącą bazą danych i automatycznie analizuje jej schemat. Obsługa wielu baz danych to unikalna cecha wśród headless CMS — większość konkurencyjnych rozwiązań obsługuje tylko jeden lub dwa silniki baz danych.
Czy Directus może zastąpić WordPress?
Directus może zastąpić WordPress w zakresie zarządzania treścią, szczególnie w projektach headless lub opartych na API. Jednak Directus nie ma wbudowanego frontendu, motywów ani kreatora stron. Musisz zbudować własny frontend, korzystając z frameworka takiego jak Next.js lub Astro. W przypadku prostych blogów lub stron wymagających wizualnej edycji WordPress pozostaje bardziej praktycznym rozwiązaniem.
Czy Directus ma edytor wizualny?
Directus zawiera Data Studio — zaawansowany interfejs administratora służący do zarządzania danymi strukturalnymi, tworzenia pulpitów nawigacyjnych i konfigurowania uprawnień. Nie oferuje jednak wizualnego kreatora stron ani edytora WYSIWYG, takiego jak Storyblok czy WordPress. Directus został zaprojektowany z myślą o zarządzaniu danymi, a nie o komponowaniu stron metodą przeciągnij i upuść.
Czy Directus nadaje się do e-commerce?
Directus dobrze sprawdza się jako system zarządzania informacją produktową (PIM) — pozwala modelować katalogi produktów, zarządzać atrybutami i udostępniać dane przez API. Nie jest to jednak platforma e-commerce. Nie znajdziesz tu koszyka, procesu finalizacji zakupu ani obsługi płatności. Aby zapewnić warstwę transakcyjną, połącz go z Shopify, Saleor lub Medusa.
Czy mogę używać Directus z Next.js?
Tak. Zainstaluj pakiet @directus/sdk, utwórz klienta wskazującego na Twoją instancję Directus i pobieraj dane w Server Components za pomocą readItems(). Directus zwraca zwykły JSON, więc nie są potrzebne żadne komponenty React specyficzne dla dostawcy. To samo podejście działa z dowolnym frameworkiem JavaScript, w tym Astro, Nuxt i SvelteKit.
Czy Directus wspiera edycję zespołową?
Tak, od wersji 11.15 (luty 2026). Directus oferuje natywną edycję zespołową ze wskaźnikami obecności w czasie rzeczywistym, które pokazują, kto co edytuje, oraz blokadą na poziomie pól, która zapobiega konfliktom. To funkcja wbudowana, a nie wtyczka. W połączeniu z globalnymi wersjami roboczymi z wersji 11.16 zespoły mogą przygotowywać i podglądać zmiany przed publikacją.
Czym jest serwer Directus MCP?
Directus wprowadził natywny serwer Model Context Protocol w wersji 11.13 (listopad 2025). MCP umożliwia narzędziom AI, takim jak Claude i ChatGPT, bezpośrednią interakcję z treściami w Directus — odczytywanie, tworzenie i aktualizowanie elementów za pomocą języka naturalnego. Serwer MCP respektuje istniejące uprawnienia RBAC, dzięki czemu dostęp AI podlega tym samym regułom co dostęp użytkowników będących ludźmi.