Summary
Directus has quietly become the first thing I reach for on almost every project — and not just as a headless CMS. Point it at a Postgres database and you get an instant REST and GraphQL API, a genuinely nice admin app your non-technical teammates can actually use, granular permissions, file handling, automation, and realtime — without writing a line of boilerplate. I rarely start an app these days without standing up Directus at some point.
This is the guide I'd hand a competent developer who's never run Directus in anger: how to self-host it properly with Docker and Railway, how to model your data, how to lock it down, and how to ship real apps on top of it.
This is a living document and will be updated as Directus updates
Loading What Directus Actually Is…
Loading Self-Hosting with Docker…
Loading Storage, Caching, and Email…
Loading Deploying to Railway…
Loading Hardening for Production…
Loading Data Modeling…
Loading The API and the SDK…
Loading Access Control: Roles and Policies…
Loading Flows: Automation Inside Directus…
Loading Extensions…
Loading Beyond CRUD: Files, Realtime, and Versioning…
Loading Real-World Patterns and Gotchas…
Loading Schema Migrations: Dev to Prod…
Loading About Roger…