Content Repository

Content's first choice

Support the documentation

This documentation was written by volunteers. Please help support our effort:

Help us improve the documentation

What is it?

The Content Repository (CR) stores your content. Imagine a table of contents. Every section is identified by a unique path. The CR works the same. Everything you see in the navigation tree in Neos is a node. You can nest them indefinitely. If you can think of it as a tree, you can build it with Neos.

We use nodes to structure content and save it to the CR. Everything you add into Neos is a node. A page is a node. A heading is a node. A two-column layout is a node. Those nodes can be nested just like headings in a table of contents. Each node has a NodeType, and, depending on this NodeType, can have various properties.

Why do we have it?

We're fond of having reusable content. The only known way to enable that is to separate the actual content (e.g. text, headlines, images) from visual aspects (e.g. styling, composition or even HTML). Neos is built around this idea. The Content Repository is the heart of Neos. It stores the content and makes it available to Fusion (which is the rendering layer).

Using Fusion, you can style and format your content as you wish. Different output formats like HTML and JSON are possible at the same time. Separating the content from the structure (e.g. HTML) and it's presentation (e.g. CSS) is way harder than adding it later on. Therefore, the concept of separation enables you to reuse the content indefinitely and independently from different presentational variations.

With Neos you rarely need any plugins. You can build a calendar, blog or a wine catalogue without one line of PHP. Those features use the CR. Getting the three latest blog posts on your homepage is easy. Showing the next event in your app is easy.


The CR is the Core of Neos.

The content repository is the conceptual core of Neos. The content in Neos is not stored inside tables of a relational database, but inside a tree-based structure: the so-called Neos Content Repository. It can store arbitrary content by managing so called nodes that can have custom properties and child nodes.

Easily configurable mapping of the 'Content Model'

To implement a content model, the developer doesn't have to deal with classical database migrations.

Instead, a model can be implemented using YAML configuration in the NodeTypes.yaml file. This makes both changing existing and creating new NodeTypes very easy.

Create your NodeTypes that fit your needs

Content elements are easily configurable and extensible, so that plugins are rarely necessary anymore. The simple configuration of own content elements is sufficient.

Modelling abstraction layer to the database

To a certain extent, the CR is comparable to files in a file-system: They are also structured as a tree, and are identified uniquely by the complete path towards the file.

Internally, the Neos ContentRepository (=CR) currently stores the nodes inside database tables as well, but you do not need to worry about that as you’ll never deal with the database directly. This high-level abstraction helps to decouple the data modelling layer from the data persistence layer.