(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{346:function(e,t,a){"use strict";a.r(t);var s=a(13),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"architecture"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),t("p",[t("strong",[e._v("Directus is a wrapper for both your database and file asset storage system.")])]),e._v(" "),t("p",[e._v("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\njust a GUI powered by the API, which allows developers, business users, and data analysts equal access to data and asset\nstorage, all in one place.")]),e._v(" "),t("p",[e._v("Here's how the platform architecture breaks down.")]),e._v(" "),t("p",[t("img",{attrs:{src:"https://cdn.directus.io/docs/v9/getting-started/architecture/architecture-20220512/directus-architecture-20220512A.webp",alt:"Directus Architecture Graphic"}})]),e._v(" "),t("p",[e._v("Directus is plug-and-play. Once linked, it does't "),t("em",[e._v("own")]),e._v(" your data or file assets, but it does create about 10-20 data\ntables needed for platform operation. These tables do not intermingle with the rest of your data, so you can remove\nDirectus without a trace. You also have the freedom to access the database with raw SQL queries and access your file\nassets with CLI commands.")]),e._v(" "),t("p",[e._v("At the lowest layer, the platform introspects the database and abstracts away specific SQL details- so no matter what\nSQL vendor you choose, the platform works seamlessly. Similarly, Directus syncs with your configured file storage\nservice, providing control over your file assets.")]),e._v(" "),t("p",[e._v("The next layer contains logic to access, transmit, query, and transform data, including event triggers, webhooks, data\nquery operations, and file transformations "),t("em",[e._v("(like image cropping)")]),e._v(". After that, data and assets get cached for efficient\nuser access.")]),e._v(" "),t("p",[e._v("Directus provides secure user access methods. Choose access token format and configure authentication as desired. You\ncan set SSO and allow login through Google, Facebook, etc.")]),e._v(" "),t("p",[e._v("Finally, a complete set of REST and GraphQL endpoints are generated dynamically, based on your data model as well as\nyour configured roles and their associated access permissions.")]),e._v(" "),t("p",[e._v("The Directus SDK is "),t("a",{attrs:{href:"https://www.npmjs.com/package/directus",target:"_blank",rel:"noopener noreferrer"}},[e._v("available via NPM."),t("OutboundLink")],1),e._v(" You also have access to two\nCommand-Line Interfaces (CLI). One enables server-side actions relating to your on-prem instance, like migrating the\ndatabase or resetting a user. The other allows you to interact with a Directus instance as you would with an SDK.")]),e._v(" "),t("p",[e._v("Directus is 100% open-source, modular, and extensible, ensuring you will never hit a hard feature ceiling within the\nplatform. Built entirely in crispy clean Typescript, mostly on Node.js and Vue.js, you have the power to add or modify\n"),t("em",[e._v("any feature")]),e._v(" with your own custom extensions.")])])}),[],!1,null,null,null);t.default=r.exports}}]);