Skip to content
Get Started

What is NodePress?

NodePress is an open-source headless CMS that you host yourself. You define the shape of your content in an admin panel, your team writes and publishes it there, and your website, app or anything else reads it through an API.

It takes ideas from WordPress with ACF (flexible content, repeaters, plugins) and from Strapi (content types and APIs generated for you), and runs on a modern TypeScript stack:

Part Built with
API server NestJS, Prisma and PostgreSQL
Admin panel Next.js 15 (App Router), Tailwind and Radix UI
Optional Redis (cache and multi-instance), S3-compatible storage, Meilisearch, SMTP

A traditional CMS stores your content and renders your pages. A headless CMS only stores and serves the content; what you build the frontend with is up to you.

┌──────────────────┐ define & edit ┌──────────────┐
│ Admin panel │ ─────────────────▶ │ NodePress │
│ (your team) │ │ + Postgres │
└──────────────────┘ └──────┬───────┘
│ REST · GraphQL
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
Next.js site Mobile app Anything else

Create a content type called blog, and GET /api/blog serves its published posts straight away. You don’t write any backend code.

  • Content modeling in the admin: 15 field types, including repeaters, groups and flexible page-builder blocks nested up to three levels deep, plus reusable components and shared choice lists.
  • APIs for every content type: REST with filtering, sorting, cursor pagination, full-text search and relation population, plus a typed GraphQL schema and OpenAPI docs that rebuild when you change a schema.
  • Editorial workflow: drafts, staging, scheduled publishing, version history, content releases, multiple languages and live preview of your own site.
  • Access control: roles and custom roles, per-content-type and field-level permissions, scoped API keys, single sign-on (OIDC) and two-factor authentication.
  • Media: uploads with WebP versions, focal points, on-the-fly image transforms, and local or S3-compatible storage.
  • Extending: plugins with lifecycle hooks, signed webhooks, forms with email and webhook actions, and a JavaScript client.
  • Production basics: Redis caching, CDN purging, read replicas, Prometheus metrics, audit logs, backups and Docker setups.

NodePress is a good fit when you want:

  • your content in your own PostgreSQL database, on your own servers;
  • editors to change content structure in a UI, without a deploy;
  • one content source for several frontends (website, app, kiosk);
  • a codebase you can read and change: it’s MIT licensed TypeScript.

If you want a hosted service with nothing to run, or a CMS that also renders your site’s pages, a SaaS CMS or a traditional CMS will suit you better.