Contentjet is an open source API-first content management system built for the modern web. What sets Contentjet apart from traditional content management systems is that it is headless by design.

Headless? Say what?

Traditional content management systems bind content to presentation by passing content through a templating system which generates HTML for viewing in a web browser. In contrast a headless CMS makes no assumptions about how content is to be presented by removing the presentation layer (the head) entirely in favour of a more flexible RESTful API.

The key design philosophy behind Contentjet is that content should exist free from it's presentation. As we now live in a world where content is consumed on numerous devices tightly coupling content to a single presentation is not always feasible.


Custom Entry types

Unlike traditional content management systems which limit content creation to a single title and body field, Contentjet let's you create your own entry types with custom fields. There are 13 fields to choose from such as text, boolean, date, multiple choice, colour and more!

Multiple projects

Projects are top-level buckets for holding content. Each project holds it's own entry types, entries, media and users. How you choose to use projects is entirely up to you.

Users may be members of multiple projects. Each project maintains it's own user access list. For example a user may be an administrator of one project but only an author in another project.

Media management

A CMS wouldn't be complete without the ability to upload images and files. Media can be attached to entries via the aptly named media field or inlined as markdown into text fields.


The application is built on a stack of awesome open source projects namely Node.js, Koa.js, Objection.js, PostgreSQL and React. The CMS is composed of 2 discreet applications, the backend API contentjet-api and the frontend HTML user interface contentjet-ui.