# Craft CMS Documentation Index Last updated: 2026-04-07T12:15:51-07:00 (commit 99f78952) ## development - [Accessibility](https://craftcms.com/docs/5.x/development/accessibility.html) — Websites and applications are used by people (and machines!) with a wide variety of capabilities. Craft gives you a powerful suite of tools to help make your projects accessible to everyone. - [Collections](https://craftcms.com/docs/5.x/development/collections.html) — Collections come from the Laravel ecosystem, and provide a fluid way of working with array-like data. - [Eager-Loading Elements](https://craftcms.com/docs/5.x/development/eager-loading.html) — When you are working with a list of elements and need to access their nested or related elements, _eager-loading_ can help optimize your element queries. - [Element Queries](https://craftcms.com/docs/5.x/development/element-queries.html) — You can fetch elements (like entries, categories, assets, etc.) in your templates or extension using **element queries**. - [Forms](https://craftcms.com/docs/5.x/development/forms.html) — If you’ve gotten familiar with Craft’s control panel, you might be wondering what kinds of things you can do from your site’s front-end. The answer is actually _quite a bit_! - [GraphQL API](https://craftcms.com/docs/5.x/development/graphql.html) — Craft provides a GraphQL API you can use to work with your content in separate applications like single-page apps (SPAs) and static site generators. - [Image Transforms](https://craftcms.com/docs/5.x/development/image-transforms.html) — Instead of requiring content editors to upload images at a specific sizes, Craft lets you define “image transforms” to automatically manipulate images in predefined ways, or on-demand. Transforms are _non-destructive_, meaning they have no effect on the original uploaded image. - [Front-End Development](https://craftcms.com/docs/5.x/development/index.html) — This section covers front-end development concepts, including… - [Templates](https://craftcms.com/docs/5.x/development/templates.html) — In Craft, you define your site’s HTML output with templates. - [Twig Fundamentals](https://craftcms.com/docs/5.x/development/twig.html) — TODO: This page is aggressively agnostic about Twig's usage—let's make it more Craft-specific. That may mean folding in or duplicating some content from the Routing page? ## extend - [Announcements](https://craftcms.com/docs/5.x/extend/announcements.html) — Plugins can notify control panel users about new features and changes by pushing an _announcement_. - [Asset Bundles](https://craftcms.com/docs/5.x/extend/asset-bundles.html) — Plugins, like Craft, are supposed to be installed above the web root, which ensures that their files can’t be accessed directly via HTTP requests. Generally that’s a Very Good Thing, because it protects Craft sites from a whole host of security vulnerabilities. - [Behaviors](https://craftcms.com/docs/5.x/extend/behaviors.html) — Behaviors are a feature of Yii Components, and functionally similar to “mixins” in other frameworks or programming paradigms. A behavior can provide additional properties and methods to its owner, without needing to subclass or replace built-in components. - [Changelogs and Updates](https://craftcms.com/docs/5.x/extend/changelogs-and-updates.html) — When you publish your plugin in the Plugin Store, its changelog is automatically scraped and displayed in a dedicated tab, as well as in Craft’s Journey: Utilities, Updates screen wherever it is installed. - [Coding Guidelines](https://craftcms.com/docs/5.x/extend/coding-guidelines.html) — Do your best to follow these guidelines when writing code for Craft and Craft plugins. - [Console Commands](https://craftcms.com/docs/5.x/extend/commands.html) — Plugins and modules can add additional console commands to Craft, which will be available via the craft executable in the terminal. - [Conditions](https://craftcms.com/docs/5.x/extend/conditions.html) — The Craft CMS condition builder is a powerful tool that helps content editors and site developers utilize dynamic, rule-based settings. - [Controllers](https://craftcms.com/docs/5.x/extend/controllers.html) — Plugins and modules can provide custom [controllers][yii] to Craft installations. They can also extend built-in controllers via behaviors. - [Control Panel Edit Pages](https://craftcms.com/docs/5.x/extend/cp-edit-pages.html) — Modules and plugins can add new edit pages to the control panel, for editing models or elements. - [Control Panel Sections](https://craftcms.com/docs/5.x/extend/cp-section.html) — Modules and plugins can add new sections to the control panel using the EVENT_REGISTER_CP_NAV_ITEMS event. Plugins also have a special getCpNavItem() method. - [Control Panel Templates](https://craftcms.com/docs/5.x/extend/cp-templates.html) — The control panel is built using Twig templates, so extending it with new pages should feel familiar if you’ve worked with Twig on the front end. - [Element Actions](https://craftcms.com/docs/5.x/extend/element-actions.html) — Plugins can provide custom actions for element index pages by creating a class that implements craft5:craft\base\ElementActionInterface. Element actions can operate on single elements or multiple elements at the same time. - [Element Exporter Types](https://craftcms.com/docs/5.x/extend/element-exporter-types.html) — Element index pages in the control panel have the ability to export elements as CSV, XML, or JSON files. - [Element Types](https://craftcms.com/docs/5.x/extend/element-types.html) — Elements underpin Craft’s flexible and extensible content modeling features. You can supplement Craft’s seven built-in element types with your own, from a plugin or module. - [Environmental Settings](https://craftcms.com/docs/5.x/extend/environmental-settings.html) — Plugin settings that may need to change per-environment, or contain sensitive information, should be implemented as **environmental settings**. - [Events](https://craftcms.com/docs/5.x/extend/events.html) — Craft has all kinds of events you can use to customize how core features work, or connect built-in processes to new functionality. Events are a Yii concept, and are used extensively throughout its architecture. In cases where Yii components are extended for internal use (like craft5:craft\base\Model), Craft provides additional events to expose a greater customization surface for developers. - [Extending Twig](https://craftcms.com/docs/5.x/extend/extending-twig.html) — Craft provides two ways for plugins to extend its Twig templating environment. - [Field Layout Elements](https://craftcms.com/docs/5.x/extend/field-layout-element-types.html) — In addition to content fields, developers can add a handful of other built-in _field layout elements_ to their field layouts to optimize the author’s attention or productivity. Craft uses field layout elements for titles, some address components, alt text on assets, native user attributes, and more. They also power “UI” elements like horizontal rules, breaks, and templates. - [Field Types](https://craftcms.com/docs/5.x/extend/field-types.html) — Plugins can provide custom field types by creating a class that implements craft5:craft\base\FieldInterface and craft5:craft\base\FieldTrait. This class serves as both a way to communicate features and behaviors of the field type (like how it stores data and what kinds of values it exposes), and as a model that fields of its type will be instantiated with (when used in a field layout or loaded via the API). - [Filesystem Types](https://craftcms.com/docs/5.x/extend/filesystem-types.html) — Asset storage is split into two concepts: - [Generator](https://craftcms.com/docs/5.x/extend/generator.html) — The Generator is a first-party tool for scaffolding modules, plugins, or components thereof. It was designed to reduce friction when setting up extensions—and contributing to Craft itself! We like to think of it as both a learning _and_ productivity tool. - [Extending GraphQL](https://craftcms.com/docs/5.x/extend/graphql.html) — Developers can use Craft’s GraphQL implementation to provide their own GraphQL data and access level for custom plugins and modules. - [Migrations](https://craftcms.com/docs/5.x/extend/migrations.html) — Migrations are PHP classes that make one-time changes to the system. - [How to Build a Module](https://craftcms.com/docs/5.x/extend/module-guide.html) — Functionally, modules are every bit as capable as plugins, but they are best suited for project-specific extensions or customizations as opposed to public, distributable packages. - [Plugin Editions](https://craftcms.com/docs/5.x/extend/plugin-editions.html) — The Plugin Store supports multi-edition plugins, which work similarly to Craft’s editions (Solo, Team, and Pro). - [How to Build a Plugin](https://craftcms.com/docs/5.x/extend/plugin-guide.html) — Plugins are typically designed and built as public packages, distributable via the first-party Plugin Store. You can also create private plugins in lieu of a module when the full suite of features are desirable (i.e. control panel navigation, settings, and project config) but the added functionality is still project-specific. - [Plugin Settings](https://craftcms.com/docs/5.x/extend/plugin-settings.html) — Once you’ve indicated your plugin will have settings by enabling hasCpSettings in your main plugin class or composer.json, you’ll need to provide a model for defining them. - [Publishing to the Plugin Store](https://craftcms.com/docs/5.x/extend/plugin-store.html) — If you want to make your plugin available in the in-app Plugin Store (and on plugins.craftcms.com) follow this guide. - [Supporting Project Config](https://craftcms.com/docs/5.x/extend/project-config.html) — If your plugin has any configurable components that store settings outside of your main plugin settings, they may be good candidates for project config support. - [Queue Jobs](https://craftcms.com/docs/5.x/extend/queue-jobs.html) — Craft uses a queue for processing background tasks like updating indexes, propagating entries, and pruning revisions. You can write simple queue job classes to register your asynchronous queue tasks. - [Extending Craft](https://craftcms.com/docs/5.x/extend/index.html) — Craft is a powerful and flexible content management system built on top of the popular PHP application framework Yii. - [Services](https://craftcms.com/docs/5.x/extend/services.html) — Services are singleton classes that get attached to your primary plugin class as components. - [Soft Deletes](https://craftcms.com/docs/5.x/extend/soft-deletes.html) — Modules and plugins can add soft delete support to their components by following this guide. - [Template Hooks](https://craftcms.com/docs/5.x/extend/template-hooks.html) — Craft templates can give modules and plugins an opportunity to hook into them using hook tags. - [Template Roots](https://craftcms.com/docs/5.x/extend/template-roots.html) — Modules and plugins can register custom “template roots” for either control panel or front-end templates. - [Topics](https://craftcms.com/docs/5.x/extend/topics.html) — Craft is both a fully-featured content management system _and_ a powerful web application framework. Extensions allow you to build on top of its smart abstractions, or create completely new features that live alongside the main application. - [Translation Categories](https://craftcms.com/docs/5.x/extend/translation-categories.html) — Modules and plugins can provide custom translation categories, for use with Yii’s Message Translations feature. - [Updating Plugins for Craft 5](https://craftcms.com/docs/5.x/extend/updating-plugins.html) — Craft 5 brings some of the most significant author- and developer-experience improvements _ever_—and in a way that is minimally disruptive to plugins. - [User Permissions](https://craftcms.com/docs/5.x/extend/user-permissions.html) — Modules and plugins can register new user permissions to the system using the EVENT_REGISTER_PERMISSIONS event: - [Utilities](https://craftcms.com/docs/5.x/extend/utilities.html) — Plugins can provide new utilities for the control panel’s **Utilities** section by creating a class that implements craft5:craft\base\UtilityInterface or extends craft5:craft\base\Utility. A utility is typically used to surface information and controls for administrative features that aren’t tied to specific elements. Each registered utility gets its own permissions. - [Widget Types](https://craftcms.com/docs/5.x/extend/widget-types.html) — Plugins can provide custom widget types for the control panel dashboard by creating a class that implements craft5:craft\base\WidgetInterface and craft5:craft\base\WidgetTrait. The class will serve both as a way to communicate various things about your widget type (with static methods), and as a model that widgets of its type will be instantiated with. ## reference - [Console Commands](https://craftcms.com/docs/5.x/reference/cli.html) — TODO: Split into controllers? - [Application Configuration](https://craftcms.com/docs/5.x/reference/config/app.html) — Craft’s entire application configuration can be customized via config/app.php. Any items returned by an app.php config file will get merged into the main application configuration array. - [Bootstrap Variables](https://craftcms.com/docs/5.x/reference/config/bootstrap.html) — These variables can be set via your environment or as PHP constants in your entry scripts. Read more about how to use bootstrap variables on the configuration page. - [Database Connection Settings](https://craftcms.com/docs/5.x/reference/config/db.html) — Craft can connect to MySQL and Postgres databases. - [General Settings](https://craftcms.com/docs/5.x/reference/config/general.html) — This group of settings affects a wide variety of Craft’s features and behaviors. If you are uncertain about whether something is configurable or not, refer to the categories in the table of contents. - [Configuration Reference](https://craftcms.com/docs/5.x/reference/config/index.html) — These pages contain comprehensive reference for Craft’s configuration files: - [Controller Actions](https://craftcms.com/docs/5.x/reference/controller-actions.html) — Controllers are Craft’s way of talking to the outside world. Pretty much everything you do with Craft is part of a request that involves a controller action—from updating settings to rendering an entry. - [Addresses](https://craftcms.com/docs/5.x/reference/element-types/addresses.html) — Addresses are a type of element you’ll most commonly encounter in conjunction with Users. Querying addresses and working with their field data is nearly identical to the experience working with any other element type. - [Assets](https://craftcms.com/docs/5.x/reference/element-types/assets.html) — Craft lets you manage media and document files (“assets”) just like entries and other content types. Assets can live anywhere—a directory on the web server, or a remote storage service like Amazon S3. - [Categories](https://craftcms.com/docs/5.x/reference/element-types/categories.html) — Craft supports user-managed, hierarchical taxonomies for content via **categories**. - [Entries](https://craftcms.com/docs/5.x/reference/element-types/entries.html) — Entries are flexible content containers that—unlike addresses, assets, or categories—have no primary or implied function. They are entirely agnostic building blocks, used to model whatever kind of content or data your project needs. - [Globals](https://craftcms.com/docs/5.x/reference/element-types/globals.html) — Globals store content that is available globally throughout your templates but is not tied to any one URL. - [Element Types](https://craftcms.com/docs/5.x/reference/element-types/index.html) — Use the sidebar to find information about a specific element type, or learn about elements in the **System** section. - [Tags](https://craftcms.com/docs/5.x/reference/element-types/tags.html) — You can create folksonomies for your entries, users, and assets using Tags. Tags are another type of element. - [Users](https://craftcms.com/docs/5.x/reference/element-types/users.html) — A user is a special type of element that represents a person. - [Addresses Fields](https://craftcms.com/docs/5.x/reference/field-types/addresses.html) — The **Addresses** field is similar to a Matrix field, but it manages nested address elements instead of entries. When you create an address it is “owned” by the element that field is attached to. Address fields are _not_ relational fields. - [Assets Fields](https://craftcms.com/docs/5.x/reference/field-types/assets.html) — Assets fields allow you to upload and relate assets to other elements. It is one of Craft’s relational custom fields. - [Button Group Since 5.7.0: The button group field](https://craftcms.com/docs/5.x/reference/field-types/button-group.html) — Button group fields provide a compact, graphical option for selecting a single value from a list. - [Categories Fields](https://craftcms.com/docs/5.x/reference/field-types/categories.html) — Categories are being phased out in favor of structure sections. The corresponding entries field has a _maintain hierarchy_ setting that mimics categories fields. - [Checkboxes Fields](https://craftcms.com/docs/5.x/reference/field-types/checkboxes.html) — Checkboxes fields give you a group of checkbox inputs, and allow the author to select multiple values (or provide any number of custom values, when allowed). - [Color Fields](https://craftcms.com/docs/5.x/reference/field-types/color.html) — Color fields provide a flexible way to store hexadecimal color values. You can define a palette to guide authors Since 5.6.0: Color field palettes, or use an open-ended input. - [Content Block Fields Since 5.8.0: The content block field](https://craftcms.com/docs/5.x/reference/field-types/content-block.html) — The content block field semantically groups existing fields into a reusable bundle, and stores content as a nested element. - [Country Fields](https://craftcms.com/docs/5.x/reference/field-types/country.html) — The **Country** field allows authors to select from a the same list of countries made available via address elements. When viewed as part of a form in the control panel, countries’ names will be localized into the user’s preferred language. - [Date Fields](https://craftcms.com/docs/5.x/reference/field-types/date-time.html) — Date fields provide a specialized input that captures and stores a date and time, in UTC. You may configure it to only accept a date (no time), and to expose a timezone selector. - [Dropdown Fields](https://craftcms.com/docs/5.x/reference/field-types/dropdown.html) — Dropdown fields provide an enhanced version of the familiar select input. Optional colors and icons help authors quickly identify choices. Since 5.7.0: Color and icon support in dropdown fields. - [Email Fields](https://craftcms.com/docs/5.x/reference/field-types/email.html) — Email fields give you a normal text input that requires a valid email address. - [Entries Fields](https://craftcms.com/docs/5.x/reference/field-types/entries.html) — Entries fields allow you to relate entries to other elements. It is one of Craft’s relational custom fields. - [Icon Fields](https://craftcms.com/docs/5.x/reference/field-types/icon.html) — Icon fields allow the user to pick icons that fit the control panel’s style from the FontAwesome library. The field’s value can be used to decorate related or nested element chips and cards by enabling **Use this field’s values for element thumbnails** or **Include this field in element cards** when adding it to a field layout. - [JSON Fields New!](https://craftcms.com/docs/5.x/reference/field-types/json.html) — Validate and store arbitrary JSON data in a simple CodeMirror editor. The data is automatically deserialized for you and can be used in templates as whatever value type was stored. - [Lightswitch Fields](https://craftcms.com/docs/5.x/reference/field-types/lightswitch.html) — Lightswitch fields give you a simple toggle input and store a boolean value. - [Link Fields New!](https://craftcms.com/docs/5.x/reference/field-types/link.html) — The link field replaced the URL field in Craft 5.3. When you update, existing fields will be automatically enhanced with the new UI. If you want to take advantage of the new features (like linking to assets, categories, and entries), check out the field’s settings screen. - [Matrix Fields](https://craftcms.com/docs/5.x/reference/field-types/matrix.html) — Matrix fields allow you to manage nested entries in a fluid way. Entries created within a Matrix field are “owned” by the element the field is attached to, and can represent anything from a slide in a gallery to an entire resource library, each record having its own URL. - [Money Fields](https://craftcms.com/docs/5.x/reference/field-types/money.html) — Money fields give you a text input tailored for storing currency amounts. - [Multi-select Fields](https://craftcms.com/docs/5.x/reference/field-types/multi-select.html) — Multi-select fields give you an input where multiple items may be selected. - [Number Fields](https://craftcms.com/docs/5.x/reference/field-types/number.html) — Number fields give you a number input that accepts a numeric value with specific bounds and granularity. - [Plain Text Fields](https://craftcms.com/docs/5.x/reference/field-types/plain-text.html) — **Plain text** fields give you either a normal text input or a multi-line textarea, where plain text can be entered. How that text is used is entirely up to you! - [Radio Buttons Fields](https://craftcms.com/docs/5.x/reference/field-types/radio-buttons.html) — Radio buttons fields give you a group of radio inputs, and allow the author to select a single value (or provide a custom one, when allowed). - [Range Fields](https://craftcms.com/docs/5.x/reference/field-types/range.html) — Range fields give you a range input that allows authors to set a number using a visual slider or a number input. - [Custom Field Types](https://craftcms.com/docs/5.x/reference/field-types/index.html) — Craft has over 20 built-in field types that help create tightly-tailored authoring and developer experiences. The table below lists fields in the same order you’ll encounter them in the control panel; you can also browse them by the type of data they store. - [Table Fields](https://craftcms.com/docs/5.x/reference/field-types/table.html) — Table fields give you a customizable table, where you can manage data or content in compact rows. - [Tags Fields](https://craftcms.com/docs/5.x/reference/field-types/tags.html) — Tags fields allow you relate tags to other elements. It is one of Craft’s relational custom fields. - [Time Fields](https://craftcms.com/docs/5.x/reference/field-types/time.html) — Time fields provide a time picker input without a date component. When you access a time field’s value, Craft hydrates the stored “time” value (a string with the format H:i, in the system’s timezone) into a native PHP DateTime object. - [Users Fields](https://craftcms.com/docs/5.x/reference/field-types/users.html) — Users fields allow you relate users to other elements. It is one of Craft’s relational custom fields. - [Reference](https://craftcms.com/docs/5.x/reference/index.html) — This section contains technical details for built-in Craft components like element types, field types, and the Twig environment. It is intended primarily for developers charged with building or maintaining a Craft project who need frequent access to code-specific features. - [Filters](https://craftcms.com/docs/5.x/reference/twig/filters.html) — The following filters are available to Twig templates in Craft. - [Functions](https://craftcms.com/docs/5.x/reference/twig/functions.html) — The following functions are available to Twig templates in Craft: - [Global Variables](https://craftcms.com/docs/5.x/reference/twig/global-variables.html) — A number of global variables are available to Twig templates. Some come from Twig itself, and some are Craft-specific. - [Twig Reference](https://craftcms.com/docs/5.x/reference/twig/index.html) — This section covers features available in Twig, Craft’s template environment. - [Tags](https://craftcms.com/docs/5.x/reference/twig/tags.html) — The following tags are available to Twig templates in Craft: - [Tests](https://craftcms.com/docs/5.x/reference/twig/tests.html) — The following tests are available to Twig templates in Craft: ## root - [Code of Conduct](https://craftcms.com/docs/5.x/coc.html) — Like the technical community as a whole, the Craft team and community is made up of a mixture of professionals and volunteers from all over the world, working on every aspect of the mission - including mentorship, teaching, and connecting people. - [Configuring Craft](https://craftcms.com/docs/5.x/configure.html) — Craft can be configured to work in a way that makes sense for you, your team, and your infrastructure. - [Hosting & Deployment](https://craftcms.com/docs/5.x/deploy.html) — In more cases than not, our recommendations for hosting and deploying a Craft website also describe effective processes for collaborating with teammates. Let’s start by reviewing some general advice on managing a Craft project. - [Licensing & Editions](https://craftcms.com/docs/5.x/editions.html) — Every Craft project starts with a free **Solo** license, which is valid for public and private use, indefinitely. - [Installation](https://craftcms.com/docs/5.x/install.html) — The prevalence of modern, mature PHP development tools and infrastructure makes Craft easy to install, run, upgrade, and deploy. - [About Craft CMS](https://craftcms.com/docs/5.x/index.html) — Craft is a flexible, user-friendly CMS for creating custom digital experiences on the web—and beyond. - [Requirements](https://craftcms.com/docs/5.x/requirements.html) — Craft is a PHP application that uses a relational database for content storage. It will run on most modern hosting environments, and can be configured to take advantage of all kinds of advanced infrastructure. - [Running Updates](https://craftcms.com/docs/5.x/update.html) — Craft has a smart system based on Composer that helps you keep your site and plugins up-to-date. This page covers routine _updates_ to dependencies, which we consider a distinct process from major-version _upgrades_. - [Upgrading from Craft 4](https://craftcms.com/docs/5.x/upgrade.html) — The smoothest way to upgrade to Craft 5 is to make sure your live site is already running the latest version of Craft 4. We recommend approaching the upgrade in three phases: preparation, a local upgrade, and rollout to live environments. ## system - [Command-Line Interface](https://craftcms.com/docs/5.x/system/cli.html) — TODO: Move usage info out of console commands page, leaving in place only controller reference sections. - [Control Panel](https://craftcms.com/docs/5.x/system/control-panel.html) — The control panel is one of Craft’s greatest strengths. Developers and content authors appreciate its smart design and powerful feature set: - [Directory Structure](https://craftcms.com/docs/5.x/system/directory-structure.html) — A fresh Craft installation will have the following folders and files in it. Existing projects may have additional files in the root. - [Drafts & Revisions](https://craftcms.com/docs/5.x/system/drafts-revisions.html) — Craft supports a variety of publishing workflows through sophisticated permissions and version-tracking systems. - [Elements](https://craftcms.com/docs/5.x/system/elements.html) — An _element_ is the most basic unit of content in Craft. Elements provide smart management, routing, and querying interfaces for users and developers. Each type of element has some unique capabilities, but they’re all built on top of a set of common features. - [Custom Fields](https://craftcms.com/docs/5.x/system/fields.html) — On their own, elements only provide a scaffold for your content—most of the content itself will be stored in *fields*. - [Garbage Collection](https://craftcms.com/docs/5.x/system/gc.html) — Craft occasionally runs a few garbage collection routines to remove stale data, including: - [Logging](https://craftcms.com/docs/5.x/system/logging.html) — Craft’s application logs can help you confirm expected behavior and investigate issues. If you’ve ever encountered a cryptic error page on a live site and wondered what actually went wrong, the logs will have the complete story. - [Email](https://craftcms.com/docs/5.x/system/mail.html) — Craft sends email in response to some user actions, like account activation, email verification, password resets, and testing email settings. All Craft editions are capable of sending emails, but system messages are only customizable in **Pro**. - [Object Templates](https://craftcms.com/docs/5.x/system/object-templates.html) — Craft uses single-line Twig “templates” in a number of places throughout the control panel to generate values from data that is only known at runtime. These templates are most often stored in Project Config, but the resulting values are typically part of a record stored in the database, or only used temporarily. - [Plugins](https://craftcms.com/docs/5.x/system/plugins.html) — Plugins extend Craft’s core functionality. They can introduce new dashboard widgets, field types, control panel sections, Twig features, workflow actions, third-party integrations, and more. - [Project Config](https://craftcms.com/docs/5.x/system/project-config.html) — Craft tracks system settings and content schema in a centralized store called _Project Config_. Changes are automatically written to YAML files in the config/project/ folder, which can be version-controlled alongside your templates and other front-end resources. - [Queue](https://craftcms.com/docs/5.x/system/queue.html) — The **queue** is Craft’s way of delegating certain long-running tasks to an asynchronous background process. - [System](https://craftcms.com/docs/5.x/system/index.html) — Let’s get to know Craft’s core features, starting with your project’s Directory Structure and the Control Panel. - [Reference Tags](https://craftcms.com/docs/5.x/system/reference-tags.html) — Reference tags can be used to create references to specific elements in your site from any textual fields, including text cells within a Table field. Some field types automatically parse reference tags, and others may need to be explicitly parsed. - [Relations](https://craftcms.com/docs/5.x/system/relations.html) — Craft has a powerful engine for relating elements to one another with five relational field types. Just like other field types, relational fields can be added to any field layout, including those within nested entries. - [Routing](https://craftcms.com/docs/5.x/system/routing.html) — Routing is the process by which Craft directs incoming requests to specific content or functionality. - [Searching](https://craftcms.com/docs/5.x/system/searching.html) — Craft includes a system-wide search index used for finding elements via keywords. Search is supported wherever you see this field in the control panel: - [Sites & Localization](https://craftcms.com/docs/5.x/system/sites.html) — A single Craft installation can power any number of websites. - [User Management](https://craftcms.com/docs/5.x/system/user-management.html) — Users in Craft represent humans that have some relationship with your site or application. They may be control panel users, member accounts, or records that represent people in general. Users implicitly have the ability to create passwords and log in, but must be granted permissions or added to groups to access the control panel or manage content.