⚠️ Work in progress — createCMS is pre-1.0 and not production-ready (not tested in production). Expect breaking changes.
createCMS

Introduction

Your Postgres. Your content. Your CMS. A composable, Git-like headless CMS for TypeScript.

@createcms/core is a headless CMS you define in code. You declare your content as typed collections of blocks, generate a database schema from those definitions, and get a fully type-safe server API and client in return. It is built on better-call and Drizzle ORM (PostgreSQL).

Work in progress — not production-ready. createCMS is pre-1.0, under active development, and has not been tested in production. Expect breaking changes and bugs; use it for prototypes, not production. Pin an exact version.

Why it exists

Your app already owns its database. createCMS installs from npm and keeps content, history, and API in your Postgres: branches, drafts, diffs, and publish as first-class APIs. Typed content and a Git-like API, living in your Postgres. Build your CMS into your app, not your app into a CMS.

What makes it different

Your collection definitions are the single source of truth. They drive the database schema, the write API, the shape of read responses, and the client, so there are no hand-written types to keep in sync. Content lives in your Postgres with Git-like versioning: every entry is a root with branches and commits, so editors can draft on a branch, open a merge request, diff, and publish. The core is framework-agnostic, with first-class helpers for Next.js and React.

Features

When to use it

  • You want content modeling in TypeScript with no separate schema language, and a type-safe API derived from it.
  • You need editorial workflows (drafts, review, publishing) backed by your own PostgreSQL database.
  • You are building on Next.js or another React framework and want to render structured content yourself.

It is not a turnkey hosted CMS with a prebuilt admin UI: you bring the database, the auth, and the rendering.

Ready to build? Start with the Quickstart.