• Document Up to Date
  • Updated On 4.1.0


This section focuses on how to build content rich applications backed by CrafterCMS. It covers the basic topics you need to define a content type and render that content as part of a page, component or service. It also covers topics like building queries, accessing services and extending the core platforms and the developer workflow (DevContentOps).

Developers need to be comfortable with Content Modeling (how to represent content in CrafterCMS for your application to retrieve said content), and how to access content items from your application/project.


For local development, you’ll need to install CrafterCMS locally and that’s best done via the local bundle. Instructions on how to do that are in Binary Bundles. Other options include running CrafterCMS in Docker or installing CrafterCMS from source.

CrafterCMS supports both headless and templated projects (templated projects are the traditional web sites with a view layer).


CrafterCMS is natively headless. CrafterCMS simply retrieves content that the developer models in the modeling tool, applies actions/rules like inheritance, security, versioning, etc. and returns the transformed content to the caller as JSON. Developers can use whatever front-end technology they want including, but not limited to: React, Vue, Angular, Flutter or similar SPAs, Android and iOS applications, etc.

Headless Examples


CrafterCMS embeds FreeMarker to provide a high-performance, clean, flexible, and tolerant of syntax variance, templating engine to render HTML directly from CrafterCMS.

It allows developers to model the content as general reusable items, and fold those into pages. Pages aggregate content from components as needed and are associated with a FreeMarker template that can render the final page. The choice of HTML tools and frameworks doesn’t matter to CrafterCMS.

Templated Examples

General Concepts

Regardless of type of project, a developer needs to be familiar with the following core concepts.

For templated projects, there are more topics to cover:


CrafterCMS is a composable CMS and provides a modular and flexible approach to building and managing websites and digital experiences. Unlike traditional monolithic CMSs, which come with pre-built features and a fixed structure, CrafterCMS allows users to assemble and configure their own system by choosing and integrating individual components or services.

The article, Composable, provides more details on the composable nature of CrafterCMS and how to take advantage of it.


DevContentOps is a set of tools and processes that allow teams of software developers, content authors, and system administrators to work together on a single project across multiple environments. These tools and processes are fully described in DevContentOps.

Studio is a great tool for content authors and for quick changes, but for development, you’ll want to use your IDE. Learn how to use your IDE with Studio in the Working in Your IDE article.


Upgrading CrafterCMS from a developer’s perspective is covered in Upgrade.

Managing Secrets

Credentials may be required in some cases when accessing content. For more information on how to manage/encode your secrets such as AWS credentials, please see Managing Secrets


While developing your project, there are times when you’d like to see more log details, to figure out what is happening and address it as needed. Overriding the logging levels allows you to see more or less details depending on your needs.

Please review the Logging article for more information.

More Resources

Below is a short set of links to other documentation for technology that CrafterCMS leverages:

Attribute Name



Spring Beans
Spring MVC
Server App Framework


Server side templates


Server side scripting


Search and content query


Crafter Profile and Social
data store
Repository Implementation

Documentation source format


CrafterCMS is a Git-based CMS. Please note that your system’s global git ignore file (list of rules for ignoring files in every Git repository on your computer) is respected by CrafterCMS. In case you find some of your content not being committed into CrafterCMS, check your global git ignore file to verify the content you’re committing is not being ignored.