Architecture
Directus is a wrapper for both your database and file asset storage system.
At first glance, it may be tempting to think of Directus as an app-centric platform. But that's not the case. The app is just a GUI powered by the API, which allows developers, business users, and data analysts equal access to data and asset storage, all in one place.
Here's how the platform architecture breaks down.
The Database
Directus is plug-and-play. Once linked, it doesn't own your data or file assets, but it does create about 20 new data tables which are required for platform operation. These tables do not intermingle with the rest of your data, so you can remove Directus without a trace. You also have the freedom to access the database with raw SQL queries, link up any other service to your database, and access your file assets with CLI commands.
Database Introspection
At the lowest layer, the platform introspects the database and abstracts away specific SQL details. Regardless of SQL vendor you choose, the platform works seamlessly. Similarly, Directus syncs with your configured file storage service, providing control over file assets.
The Data Engine
The next layer contains logic to access, transmit, query, and transform data, including event triggers, data querying operations, and file transformations (like image cropping). After that, your data and assets get cached for efficient user access.
Access Control
Directus provides secure user access methods. Choose access token format and configure authentication as desired. You can set SSO and allow login through Google, Facebook, etc.
The API
Finally, a complete set of REST and GraphQL endpoints are generated dynamically, based on your data model as well as your configured roles and associated access permissions.
The Directus JS-SDK is available via NPM. You also have access to two Command-Line Interfaces (CLI). One enables server-side actions relating to your on-prem instance, like migrating the database or resetting a user. The other allows you to interact with a Directus instance as you would with an SDK.
The Data Studio
The Directus Data Studio is a no-code dashboard that brings the whole team together.
- Build your data model and manage data, content, users, and file assets.
- Create roles and permissions for your users, with granular and conditional logic.
- Design flows for task automation and data processing with a low-code GUI.
Open Source
Directus is 100% open-source, modular, and extensible, ensuring you will never hit a hard feature ceiling within the platform. Built entirely in crispy clean Typescript, mostly on Node.js and Vue.js, you have the power to add or modify any feature with your own custom extensions. ⭐ Star us on GitHub! ⭐
Versioning
Directus follows a SemVer-like versioning structure, but it's important to note that it does not follow SemVer precisely. For complex systems like Directus, SemVer doesn't really scale as any tweak to any part of the codebase could be considered a breaking change for a fraction of use cases. We rely on an 80/20 approach to breaking changes: If the change affects the vast majority of users, it's a major breaking change. Otherwise, we accept minor breaking changes as part of the minor release cycle.
xx.xx.xx
-> major.minor.patch
- Major — A "big deal" release: big breaking changes, big features, big re-designs.
- Minor — A new feature or meaningful improvement to an existing feature: may or may not be breaking.
- Patch — Bugfixes and tweaks that are backwards compatible: but no new features.