← All workProducts · 2026 · Live

Open-source headless CMS

A self-hosted CMS for developers: model content in a visual editor, publish with live preview and releases, and deliver it over REST, GraphQL and real-time events.

Role
Design, engineering, docs
Built with
NestJS · Next.js · PostgreSQL · Prisma · GraphQL · Socket.io · Docker
01
The problem

Own your content, outright.

Most headless CMSs make you rent your content, or keep the features that matter for an enterprise plan. I wanted one you host yourself — that editors still enjoy using.

NodePress entry editor with the live preview pane
02
Model

A schema editor that respects your data.

15 field types, reusable components and conditional fields. Rename or convert a field and every existing entry is migrated in the same transaction.

Content type editor with fields and the live JSON schema
03
Collaborate

Enterprise workflow, in the box.

Live preview, releases, version history, SSO and permissions down to single fields — per role, per module, per content type.

Module access per role on the permissions page
04
Deliver

Every type is an API on save.

REST with nested filters, a typed GraphQL schema that rebuilds itself, real-time events and signed webhooks — plus a typed client. This site reads its content with it.

example.ts
import { createClient } from '@nodepress-cms/client';

const cms = createClient({ url: process.env.NODEPRESS_URL });

const { data } = await cms.collection('project').list({
  where: { featured: { eq: true } },
  sort: 'createdAt:asc',
});
15
Field types
9
Admin languages
414
End-to-end tests
4
Ways to deliver
REST · GraphQL · Events · Webhooks
Design, engineering, docsNestJSNext.jsPostgreSQLPrismaGraphQLSocket.ioDocker
Next projectGSR Calculator →