Directus wraps any SQL database with a REST API, GraphQL API, and admin dashboard — automatically. Point it at your existing Postgres, MySQL, SQLite, or MSSQL database and get a full API in minutes.
Why Directus?
- Database-first — wraps YOUR existing database, doesn't replace it
- Auto REST + GraphQL — instant API from any SQL schema
- Admin UI — beautiful dashboard for content management
- Auth built-in — users, roles, permissions, SSO
- Open source — self-host free, unlimited users
Quick Start
npx create-directus-project@latest my-project
cd my-project
npx directus start
# Or Docker
docker run -d -p 8055:8055 directus/directus
# Admin: http://localhost:8055
REST API (Auto-Generated)
BASE="http://localhost:8055"
TOKEN="your-admin-token"
# List all items in a collection
curl "$BASE/items/articles" \
-H "Authorization: Bearer $TOKEN"
# Get single item
curl "$BASE/items/articles/1" \
-H "Authorization: Bearer $TOKEN"
# Create item
curl -X POST "$BASE/items/articles" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Hello World",
"content": "My first article",
"status": "published"
}'
# Filter, sort, paginate
curl "$BASE/items/articles?filter[status][_eq]=published&sort=-date_created&limit=10" \
-H "Authorization: Bearer $TOKEN"
# Deep filtering (relations)
curl "$BASE/items/articles?filter[author][name][_contains]=Alice&fields=title,author.name,tags.name" \
-H "Authorization: Bearer $TOKEN"
# Aggregate
curl "$BASE/items/articles?aggregate[count]=*&groupBy[]=status" \
-H "Authorization: Bearer $TOKEN"
GraphQL API
# POST http://localhost:8055/graphql
{
articles(
filter: { status: { _eq: "published" } }
sort: ["-date_created"]
limit: 10
) {
id
title
content
author {
name
avatar {
id
}
}
tags {
name
}
}
}
JavaScript SDK
import { createDirectus, rest, readItems, createItem } from '@directus/sdk';
const client = createDirectus('http://localhost:8055')
.with(rest());
// Read items
const articles = await client.request(
readItems('articles', {
filter: { status: { _eq: 'published' } },
fields: ['title', 'content', { author: ['name'] }],
sort: ['-date_created'],
limit: 10,
})
);
// Create item
const newArticle = await client.request(
createItem('articles', {
title: 'New Article',
content: 'Hello from SDK',
status: 'draft',
})
);
Key Features
| Feature | Details |
|---|---|
| Databases | Postgres, MySQL, SQLite, MSSQL, MariaDB, CockroachDB |
| API | REST + GraphQL (auto-generated) |
| Auth | Local, SSO (OAuth, SAML, LDAP) |
| Files | Built-in asset management (S3, local, etc.) |
| Flows | Visual automation builder |
| Webhooks | On create/update/delete events |
| Roles | Granular field-level permissions |
Resources
Need a headless CMS or data API? Check my Apify actors or email spinov001@gmail.com.
Top comments (0)