Demo API docs Source docs

HashBrown CMS

A free and open-source headless CMS built with Node.js and MongoDB

Getting started

Installing HashBrown

First make sure you have these dependencies met:

Then clone the code and install the dependencies:

git clone --recursive
cd ./hashbrown-cms
npm install

Running HashBrown

Building and starting the server for production:

npm start

Building/watching frontend files:

npm run build:frontend
npm run watch:frontend

Using Docker:

npm run start:docker
npm run restart:docker
npm run watch:docker
npm run stop:docker

Using nodemon:

npm run watch:nodemon

Updating HashBrown

To update the core HashBrown version and all of its dependencies:

npm run update

Or manually:

cd /to/your/hashbrown/dir
git pull
git submodule update --recursive --init
npm install

Remember to stop and restart the server afterwards.

Configuring MongoDB

Using environment variables:

Using /config/database.cfg

  "host": "host" | ["host1", "host2"] | "host1,host2",
  "port": "port" | [port1, port2] | "port1,port2",
  "username": "<username>",
  "password": "<password>",
  "prefix": "<database name prefix>",
  "options": {
    "<key>": "<value>",


The folder structure for plugins is like this:


Plugins follow the same file and namespace structure as the main codebase.

When developing plugins, use npm run watch:frontend to compile client-side code and npm run watch:nodemon or npm run watch:docker for server-side code.

When using Docker, issue the command touch package.json to reload the daemon (you might have to exit and re-enter the npm run watch:docker command depending on your OS).


If you'd like to contribute to HashBrown development, you can make a pull request to our repo or contact us about becoming a collaborator

Talk to us


Report issues

If you have questions, bug reports or anything else of the sort, please use the issue tracker