Contenta is an API-First Drupal distribution.

It's all about your content everywhere.
"Take control of your headless CMS with Contenta"


Ready to use

code

API
ready

An HTTP API provided ready to use with full auto-generated documentation.

layers

Example
content

Example content to help you understand how all works. This can be removed all in one click.

file_download

Example
consumers

Many consumers in different technologies can show you how easy is to build a Contenta project.

invert_colors

By the
community

A community of experts is ready to guide with Contenta and solve common challenges together. Additional information can be found on YouTube. Use video downloader to save this content for later use.



language
Our Mission

Contenta is the community driven API distribution for Drupal 8.

It provides a standard platform that is API ready along with demo content and example front-end applications. Contenta intends to ease the pain of using, or simply trying, decoupled Drupal.

Read more about Contenta’s mission in this blog post, or watch a presentation about it.

Forget about Drupal
Non-drupalistas can get the Drupal part done quick and focus on their framework of choice.
Ready to try decoupled Drupal
Contenta comes with everything (code and content) installed so you can start checking decoupled Drupal right away.
Find all the docs
The knowledge hub is a manually curated list of good resources on decoupled Drupal.
Industry ready
The Contenta CMS community accumulates a lot of experience in real projects. Contenta ships with many gotchas solved.
Compare With Other Decoupled CMS

There are other options in for decoupled CMS. We believe that Contenta CMS provides advantages over its alternatives.

  • Contenta CMS is fully Free Open Source Software. With a GPL v2.0 license. This means that you have no limitations. No more pricing plans or maximum number of requests.
  • We have the best content modeling tools in the world, because it's based on Drupal.
  • You host your Contenta CMS installation how you need. That allows you to choose the best setup for your use case (choose your CDN, hosting provider, etc.).
  • We provide FOSS examples for consumers in different technologies.
  • Contenta CMS is actively supported by an open community.

But this is not just us saying this! Read an independent comparison between Contenta CMS and other alternatives.

compare
Quick Install
Local development only

warren buffett portfolio vocal splitter

The installer needs Composer 1.7 or higher.

The quick installation is intended for local development only. For this to work you will need to have composer installed in your local machine. See get composer for more details. Also, make sure that the sqlite-extension is installed (sudo apt-get install php-sqlite3 in debian/ubuntu).


php -r "readfile('https://raw.githubusercontent.com/contentacms/contenta_jsonapi/8.x-2.x/installer.sh');" > contentacms-quick-installer.sh
chmod a+x contentacms-quick-installer.sh
./contentacms-quick-installer.sh
          
Installation

The installer needs Composer 1.7 or higher.

  1. Get Composer
  2. Create a new project using a command like this. This will pull down the installation profile + core + modules, so maybe get a cup of tea:
    
    php -r "readfile('https://raw.githubusercontent.com/contentacms/contenta_jsonapi_project/8.x-2.x/scripts/download.sh');" > download-contentacms.sh
    chmod a+x download-contentacms.sh
    ./download-contentacms.sh /path/to/new-dir-for-contenta
                  
  3. After that, copy .env.example into .env and add the database connection details. NOTE: it is highly recommended to use .env.local to store your credentials, since that file is ignored by git.
    
    # Example .env file.
    SITE_MAIL=admin@localhost
    ACCOUNT_MAIL=admin@localhost
    SITE_NAME='Contenta CMS Demo'
    ACCOUNT_NAME=admin
    MYSQL_DATABASE=contenta
    MYSQL_HOSTNAME=localhost
    MYSQL_PORT=3306
    MYSQL_USER=contenta
                  
    
    # Example .env.local file.
    MYSQL_PASSWORD=contenta
    ACCOUNT_PASS=admin
                  
  4. Once you have added your database connection details you can:
    
    composer run-script install:with-mysql
                  
Contenta JS

Contenta JS is a project that integrates with Contenta CMS to provide an ultra high performing headless CMS. It also provides a nodejs application where to host your Server Side Rendering and custom code integrations.

Contenta CMS (aka the Drupal part) is designed to serve your project’s content. ContentaJS (aka the node.js part) is designed to serve the requests to your client side applications. Some of those requests will end up requesting data from Contenta CMS, others won’t.

You may need Contenta JS because for many reasons you will end up needing a node.js server for your project anyways. You may as well use an opinionated and optimized starter kit that will solve many of your needs without effort.

Help Spread the Word

Have you created a digital experience with Contenta CMS? We would love to know! We can help promote your project and you can help us showcase the power of Contenta. Send us a tweet or a private message to know about your project.

If you are planning to talk about Contenta CMS at a local event, we have slide decks and ideas we can share with you.

share
Umami magazine
Demos

An integral part of Contenta is to provide an out of the box content model and demo content ready for you to start working with it. The demo chosen by the community is a recipe magazine.

With this in mind, every demo consumer will implement this recipe magazine site with the goal in mind to compare the different implementations.

Example Consumers

Choosing your own front-end technology is one of common reasons to choose a decoupled approach. In a decoupled architecture you can also have multiple front-ends at the same time. Contenta gives you examples on how to build a consumer application in different technologies.

We will implement the same wireframes as the Out of the Box Initiative, so all the demo applications can be compared. Even though all applications will have the same structure, each one will choose their look and feel. Angular may use material design, elm may use bootstrap, etc.

Front-end Status Example Code
Angular Running demo Website Repo
Elm Running demo Website Repo
Ember No demo No demo Repo
Ionic   Running demo Not yet Repo
React + Next.js Running demo Website Repo
Vue.js + Nuxt.js Running demo Website Repo
Chatbot Running demo Blog post Repo

If you want to contribute to any of the demo apps above or add a new one, join the Slack channel and become part of the project!

Development

Join the discussion in the #contenta Slack channel.

For documentation on the development on contenta_jsonapi itself, see docs/development.

Presentations
Drupal Summer Barcelona
Decoupled Dev Days NYC
DrupalCon Vienna 2017