Directus (Self-Hosted)
We first assessed Directus, a Vue.js and Node-based headless CMS, while exploring alternatives to Strapi for one of our client's projects. It stood out of the bunch because it provided an obvious but surprisingly rare functionality among other comparable solutions—the ability to create repeatable data structures (known as blocks in Directus or components in Strapi) nested within each other. It is a must if your content team wants to create complex page layouts dynamically via the CMS. Although being by far the most popular headless CMS, as of March 2026 Strapi does not provide this much-awaited feature.
How does Directus solve this seemingly hard problem? We reckon that because of its data model-first approach and well-designed UI, it is not a problem that could arise at all. Directus does not try to strike a balance between usability for developers and user experience for the content editors. The team behind the software recognizes which parts of the application are going to be used by the two respective groups, and designs them accordingly.
For instance, the data modelling UI is quite transparent as to what kind of SQL tables are going to be created, and allows technical users to fine-tune most of the settings. Each collection or data structure, even blocks, is an SQL table, and every table, even Directus system tables and M2M relationship junction tables, are configurable via the UI as Directus collections. This simple one-to-one mapping means that developers, for the most part, do not have to guess what database structures the app will produce and what kind of hidden limitations each configuration entails.
However, Directus is not without its rough edges. By default, Directus allows to store the data model in a schema file to make sure local, staging, and production environments are synced, yet this approach caused constant merge conflicts in Git. Eventually, we found a usefull tool for this, but having previously worked with Strapi, this feels like an afterthought, suggesting that the Directus team tailors their product to their SaaS solution.
Overall, Directus is a mature option for a headless CMS that provides extensive customization capabilities via its Extensions SDK. Other features include GraphQL support, automatic asset transormation, custom flows with scriptable event hooks, and fine-grained access control settings. We recommend the self-hosted version for teams with strong technical background who need a highly flexible headless CMS solution.