Skip to main content
Next.js 16 · Self-hosted · v1.6

Built sharp.
Stays sharp.

NextPress is the publishing engine you run yourself — the classic CMS model you already know, rebuilt server-first on Next.js. No PHP, no tracking, with SEO and security baked into core. One repo, one deploy, your data.

yoursite.com/admin
The NextPress admin dashboard: content, integrations, and system health cards at a glance.
0PHP
Pure TypeScript, top to bottom — strict, server-first, type-safe.
1deploy
One Next.js app on Vercel's free tier. One repo, your data.
100% yours
Self-hosted. No tracking pixels, no third parties, no lock-in.
<10min
Install, finish the wizard, publish your first post.
Familiar model

Everything you know. None of the baggage.

If you've run the classic PHP CMS, NextPress feels familiar from day one — the same mental model, rebuilt type-safe and server-first.

The classic CMSNextPress
Posts & post typesPosts with typed schemas & revisions
Categories & tagsTopics (flat) + Pillars & Spikes (hub-and-spoke)
Actions & filtersType-safe hook bus (actions + filters)
Plugins (PHP)Isolated TypeScript plugins — own data, migrations & routes
ThemesSwappable presentation layer + visual builder
Options tableSettings registry with Zod validation & encryption
Roles & capabilitiesGranular permissions + step-up auth
Sitemap / RSS / robots (plugins)Built-in and load-bearing — ships in the essential tier
Features

A full CMS surface — nothing bolted on later

Content, media, themes, plugins, and a REST API. The pieces you'd reach for a subscription to add are already in the box.

Block-based editor

Write posts & pages in a visual Puck + Tiptap editor — drag in hero sections, galleries, and FAQ accordions.

Pillars & Spikes

Topical clusters: one overview Pillar auto-links its focused Spikes, wiring internal links and sitemap structure.

Media library

Uploads, galleries, automatic WebP. Keep blobs in the DB or swap to Cloudflare R2 — no code change.

Menus & mega-menus

Structured navigation and rich mega-menus, built in the admin — without touching a theme file.

Themes & builder

Swap the presentation layer per site and customize templates, fonts, and colors in a visual builder.

Typed plugins

Every feature is a plugin with its own data, settings, migrations & hooks. A broken one is sandboxed — never takes the site down.

REST API

Bearer-token REST API with rate limiting and per-token IP allowlists for headless frontends and mobile apps.

Clean upgrades

Pull a new release — your customizations live in plugins and themes, not patched-into core.

The editor

A real visual editor — not a text box

Compose posts and pages by dragging blocks into place. Hero sections, image galleries, and FAQ accordions are first-class, powered by Puck + Tiptap and backed by typed block schemas.

  • Drag-and-drop hero, gallery, and FAQ blocks.
  • Same editor for posts and pages — one thing to learn.
  • Revisions and a per-post SEO panel in the right rail.
yoursite.com/admin/pages/edit
The block-based page editor with a hero-section widget being configured.
Themes

Customize the look in the browser

The visual theme builder edits templates, fonts, and colors live — no rebuild, no theme file spelunking. Swap the whole presentation layer per site while your content stays put.

  • Live template, font, and color editing.
  • Reusable widgets, incl. a newspaper suite.
  • Swappable layer — activated per site.
yoursite.com/admin/appearance/builder
The visual theme builder editing a layout with live template controls.
SEO

SEO that survives everything

Sitemaps, schema.org structured data, canonical URLs, RSS, and OG/Twitter cards ship in an essential-tier plugin that loads even when every optional plugin fails. Per-post meta and a redirects manager are built in.

  • Structured data & schema.org per content type.
  • Open Graph & Twitter cards, topic landing pages.
  • A redirects manager for slug-rename continuity.
yoursite.com/admin/seo
The SEO admin showing structured-data schema configuration.
In core, always on

SEO and security aren't add-ons

The two things sites get wrong under pressure are the two things NextPress refuses to make optional.

SEO survives everything

Ships in an essential-tier plugin that loads even if every optional plugin is disabled.

  • Sitemaps, schema.org, robots.txt, RSS, canonical URLs.
  • Per-post meta plus Open Graph & Twitter cards.
  • Topic landing pages for internal-link clusters.
  • A redirects manager for slug renames.

Security is the baseline

Defense in depth on the auth path — encrypted, audited, and lockable out of the box.

  • Brute-force account lockout + IP & country blocking.
  • Step-up re-authentication for sensitive actions.
  • Append-only audit log + failed-login forensics.
  • Encrypted credentials at rest, secret redaction in logs.
Developer & API

Extend it in TypeScript. Ship it on Vercel.

Plugins are TypeScript files in your repo — install one by cloning it, uninstall by deleting it. Every plugin brings its own data, settings, migrations, and hooks, and a broken plugin is isolated at boot. Consume everything over a Bearer-token REST API.

Next.js 16 React 19 TypeScript Turso libSQL Drizzle ORM NextAuth v5 Vercel
A plugin is just TypeScript
export const plugin = definePlugin({ name: 'reading-time', migrations: ['001_init.sql'], filters: { 'post.render': (html, post) => withReadingTime(html, post), }, })
Read it back over REST
curl https://yoursite.com/api/posts \ -H "Authorization: Bearer $NEXTPRESS_TOKEN"
Quick start

Live in three steps

Runs on Node.js 22+. Turso is optional — skip it and NextPress writes to a local SQLite file, perfect for kicking the tires.

STEP 01

Clone & install

# grab the engine git clone …/nextpress-engine.git cd nextpress-engine npm install
STEP 02

Configure & migrate

# set AUTH_SECRET in .env.local cp .env.example .env.local npm run plugins:discover npm run migrate
STEP 03

Run the wizard

npm run dev # open /admin → first-run wizard ✓ your first post in < 10 min

Deploying for real? Fork the repo, create a Turso database, import at vercel.com/new, and set AUTH_SECRET + TURSO_DATABASE_URL + TURSO_AUTH_TOKEN. The build runs plugins:discover + migrate for you. Full walkthrough in the docs.

Free for noncommercial use

Own your publishing stack

One repo, one deploy, your data. Fork it, finish the wizard, and publish your first post in under ten minutes.

Get it on GitHub Read the quick start
$ git clone https://github.com/drewaltukhov/nextpress-engine.git