DEPRECATED. Contenta CMS was an educational distribution to show examples of best practices for decoupled projects. Decoupled Drupal has been stable for a long time and the relevance of this project has dwindled over the years. Additionally, since no one has stepped up to fill the maintainer role, I have decided to archive this project. Thanks to everyone who participated to this project over the years.
LOOKING FOR HELP TO MAINTAIN CONTENTA. It has been a while since I have found the motivation to keep Contenta CMS up-to-date and improved. I don't anticipate this changing in the near future. Please reach out if you would like to step up as a new maintainer of this project.
Contenta is a content API and CMS based on Drupal 8. It provides a standard, jsonapi-based platform for building decoupled applications and websites.
Follow the documentation instructions to install Contenta CMS.
Once your site is running locally, you might want to use Curl to examine the pre-installed content:
curl --header 'Accept: application/vnd.api+json' http://127.0.0.1:8888/api/recipes
The result will be a list of recipes. Note that:
- The Drupal implementation of the jsonapi uses entity uuids to identify individual content resources. Append a
/{{uuid}}
to the URL above to fetch a single recipe. - Contenta uses the JSON API Extras module to customize the URL to resources:
/api/recipes
instead of/jsonapi/node/recipes
, for example. Contenta also configures JSON API Extras to customize the output of the request to eliminate unnecessary fields.
When you actually build a front-end you will likely have CORS (Cross-Origin Resource Sharing) issues.
In order to allow browsers to request the contenta back-end you need to:
- Copy sites/default/default.services.yml to sites/default/services.yml
- Allow your app to access it, by replacing the end of this configuration file.
cors.config:
enabled: true
allowedHeaders:
- '*'
allowedMethods:
- '*'
allowedOrigins:
# Note: you need to specify the host + port where your app will run.
- localhost:8000
exposedHeaders: false
maxAge: false
supportsCredentials: false
- Run drush:
cd <DESTINATION>/web && ../vendor/bin/drush cr
Join the discussion in the #contenta Slack channel.
For documention on the development on contenta_jsonapi itself, see docs/development.
- If you want a setup which allows you to contribute back to Contenta, follow the installation instructions above
- Replace the /web/profiles/contrib/contenta_jsonapi directory with a checkout of this repo
cd -DESTINATION-
rm -rf web/profiles/contrib/contenta_jsonapi
git clone git@github.com:contentacms/contenta_jsonapi.git web/profiles/contrib/contenta_jsonapi
Nightwatch provides automated browser testing and can be found in the tests/nightwatch
directory. To install and run locally, you will need Yarn and Chrome.
yarn install
yarn run nightwatch
There are a bunch of example consumers, see http://www.contentacms.org/#example-consumers for a list of them.
Contenta CMS is a Fork & Go solution. There is no supported upgrade path. You may update your Drupal like you usually do.
Please see documented issues :
This work is based upon a couple of contrib modules.
On top of that the thunder distrbution was used as sort of a base for this installation profile.
Contenta CMS is built by humans.