# Show HN: NextBlock CMS – Open-source full-stack CMS for NextJS 16 and Supabase

> Source: <https://github.com/nextblock-cms/nextblock>
> Published: 2026-08-11 14:29:38+00:00

**The AI-Native, Open-Core CMS for Next.js 16**

**Speed. Scalability. AI-Readiness (coming soon).**

Build premium, high-performance websites in minutes, not months.

**👉 View Live Demo**

Explore the admin dashboard in our public sandbox (resets every 15 minutes).

**User:** demo@nextblock.ca • **Pass:** password

Tired of slow WordPress sites? Finding headless CMSs too complex? **NextBlock™** is the sweet spot.

We combined the **flexibility of a Block Editor** with the **raw power of Next.js 16 Server Components**. The result is a CMS that feels like a static site but manages like a dynamic platform.

**⚡ 100% Lighthouse Performance**: Built-in edge caching, image optimization, and zero layout shift. Speed is not a plugin; it's the default.**🤖 Built for AI Agents**: Our codebase is documented and structured specifically to be easily read and extended by AI coding assistants.**🛍️ E-Commerce Ready**: Premium commerce package for digital products, checkout providers, currency, tax, and shipping management.**🧱 Visual Block Editor**: A reusable Tiptap-powered Notion-style editor that your clients will actually enjoy using.**🔓 Open-Core Model**: The core is 100% Free & Open Source (AGPL). Premium features are activated via License Keys.

| Feature | NextBlock™ CMS | WordPress | Payload / Strapi |
|---|---|---|---|
Tech Stack |
Next.js 16 + Supabase | PHP + MySQL | React / Node.js |
Architecture |
Nx Monorepo | Monolith | Monolith / Workspaces |
Performance |
🟢 100/100 (Default) |
🔴 Bloated (Plugins) | 🟡 Spec-dependent |
Security |
🔒 Static/Edge First | 🔓 Plugin vulnerabilities | 🔒 Secure |
DX |
💎 React Server Components |
📜 Legacy PHP Hooks | 🧩 Config Heavy |
AI Ready |
✅ Native |
❌ No | 🟡 Integration required |

Stop cloning heavy repos. Start with our CLI and get a production-ready app instantly.

```
npm create nextblock@latest
```

This runs the `create-nextblock`

CLI, which scaffolds the canonical application. The CLI no longer asks for credentials in the terminal — once the project is created, start it and finish setup in your browser:

```
npm run dev   # then open http://localhost:4200/setup
```

The **First-Boot Setup Wizard** at `/setup`

walks you through connecting Supabase, configuring storage / email, and creating the first administrator. Every fresh instance redirects there automatically until an admin exists.

Tip — keep the new repo public.When Vercel asks, leave"Create private Git Repository" unchecked. On the free (Hobby) plan, automatic upstream updates only deploy from apublicrepo — Hobby blocks bot-authored deploys on private repos — and public also makes update checks fully tokenless. You can change visibility later in the repo's GitHub settings if you change your mind. Details:[docs/13].

During import, Vercel's native **Supabase Marketplace integration** (the `stores`

button parameter) prompts you to create a Supabase database (name + region), then
**provisions it, connects it to the project, and injects its keys before the first
build** — you never copy a value, and there are **no environment variables to fill in**
(the site URL defaults to your `*.vercel.app`

URL and the app secrets are derived
automatically). The app boots with the database already connected: the wizard
auto-skips the connection step, applies the schema for you, uses the connected Supabase
project for media storage, and leaves just "create your admin." Full walkthrough:
[docs/12-VERCEL-DEPLOYMENT.md](/nextblock-cms/nextblock/blob/master/docs/12-VERCEL-DEPLOYMENT.md).

Want a fully local, zero-config sandbox?UseLocal Self-Hosted Docker Mode— one command spins up the entire stack (Supabase engines + S3 storage + the app) on your own machine, withno cloud accounts. The app boots straight into the`/setup`

wizard with MinIO storage pre-filled. See[docs/11-SELF-HOSTED-DOCKER.md].

Note:You are currently looking at theNx Monorepo(The Factory), not the generated product template.NextBlock™ is an Nx monorepo for a Next.js 16 CMS backed by Supabase. The repo contains the canonical application, the

`create-nextblock`

CLI, shared editor and UI packages, the database and migration layer, and the premium ecommerce module.

`apps/nextblock`

: canonical public site and CMS application`apps/create-nextblock`

: scaffolding CLI and template sync pipeline`libs/db`

: Supabase clients, package activation checks, migrations, and db types`libs/editor`

: reusable Tiptap editor package`libs/ecommerce`

: premium commerce package and CMS commerce screens`libs/sdk`

: typed block extensibility contract`libs/ui`

,`libs/utils`

: shared primitives and helpers

**Prerequisites** — create these three things first; `npm run setup`

will ask for their keys:

**Supabase project**([dashboard](https://supabase.com/dashboard)) — you'll need the** Reference ID**(Project Settings → General), the** connection string**(Connect → Direct connection → URI), the** anon**+** service_role**keys (Project Settings → API Keys), and a** Personal Access Token**(Account → Access Tokens → Generate new token).** Cloudflare R2 bucket**([dashboard](https://dash.cloudflare.com)→ R2) — create a bucket, enable its** Public Development URL**(Bucket → Settings → General), then create an** Account API token**(R2 → Manage API Tokens) with*Object Read & Write*. Copy the**Access Key ID** and**Secret Access Key**— the secret is shown only once.** SMTP credentials**([SMTP2GO](https://www.smtp2go.com)works very well) — required so Supabase can email the confirmation link your first admin needs to sign in.

Then run:

```
git clone https://github.com/nextblock-cms/nextblock.git
cd nextblock
npm install
npm run setup
npx nx serve nextblock
```

The interactive `setup`

wizard writes your `.env.local`

(Supabase, R2, SMTP, and auto-generated secrets), links the Supabase CLI, and applies the database schema.

**First login:** the dev server runs at ** http://localhost:4200**. Open

`/sign-up`

and create your account — the **first** account to register automatically becomes the

**ADMIN**. Click the confirmation email (or confirm the user in Supabase → Authentication → Users), then sign in to reach the CMS at

`/cms/dashboard`

.Prefer to run everything on your machine? With **Docker Desktop** running:

```
git clone https://github.com/nextblock-cms/nextblock.git
cd nextblock
npm install
npm run docker:setup     # or: npm run setup → pick "Local Self-Hosted Docker Mode"
```

This builds and boots the full self-hosted stack (Postgres + GoTrue + PostgREST + Kong, MinIO for media, and the app) and applies migrations automatically — the only prompts are optional Turnstile and SMTP. The app runs at ** http://localhost:3000** and the first sign-up becomes ADMIN (auto-confirmed, no email step). Manage it with

`npm run docker:up`

/ `docker:down`

/ `docker:logs`

. Full guide: [docs/11-SELF-HOSTED-DOCKER.md](/nextblock-cms/nextblock/blob/master/docs/11-SELF-HOSTED-DOCKER.md).

`npx nx serve nextblock`

- Start the local development server for the CMS`npm run lint`

- Lint the monorepo`npm run db:types`

- Generate Supabase types`npm run db:migrate:check`

- Preview pending Supabase migrations safely`npm run db:migrate`

/`npm run db:push`

- Apply pending migration files only, without resets or sandbox seeding`npm run db:migrate:repair-history:check`

- Preview baseline migration-history repair for existing live databases`npm run generate:sandbox`

- Generate sandbox data`npm run sandbox:reset`

- Reset the sandbox environment

The root `docs/`

folder is the maintained reference set for both contributors and AI agents.

*The template docs are copied from the root docs through the sync pipeline, so this root docs set is the place to maintain first.*

| Document | Purpose |
|---|---|
|

[docs/02-ECOMMERCE-CAPABILITIES.md](/nextblock-cms/nextblock/blob/master/docs/02-ECOMMERCE-CAPABILITIES.md)[docs/03-CMS-AND-EDITOR.md](/nextblock-cms/nextblock/blob/master/docs/03-CMS-AND-EDITOR.md)[docs/04-DATABASE-AND-AUTH.md](/nextblock-cms/nextblock/blob/master/docs/04-DATABASE-AND-AUTH.md)[docs/05-DEVELOPER-GUIDE.md](/nextblock-cms/nextblock/blob/master/docs/05-DEVELOPER-GUIDE.md)[docs/06-CLI-AND-SCAFFOLDING.md](/nextblock-cms/nextblock/blob/master/docs/06-CLI-AND-SCAFFOLDING.md)`create-nextblock`

, template sync, and generated-project behavior[docs/07-BLOCK-SDK-AND-EXTENSIBILITY.md](/nextblock-cms/nextblock/blob/master/docs/07-BLOCK-SDK-AND-EXTENSIBILITY.md)[docs/08-NEXTBLOCK-CORTEX-AI-ARCHITECTURE.md](/nextblock-cms/nextblock/blob/master/docs/08-NEXTBLOCK-CORTEX-AI-ARCHITECTURE.md)[docs/09-LIVE-DRAFT-MODE.md](/nextblock-cms/nextblock/blob/master/docs/09-LIVE-DRAFT-MODE.md)[docs/10-CUSTOM-BLOCKS.md](/nextblock-cms/nextblock/blob/master/docs/10-CUSTOM-BLOCKS.md)[docs/11-SELF-HOSTED-DOCKER.md](/nextblock-cms/nextblock/blob/master/docs/11-SELF-HOSTED-DOCKER.md)[docs/README.md](/nextblock-cms/nextblock/blob/master/docs/README.md)

Under the hood note:The migration folder under`libs/db/src/supabase/migrations`

is the best source of truth for current platform capabilities.

Join the community and stay updated on the latest features.

**X (Twitter):**[@NextBlockCMS](https://x.com/NextBlockCMS)** LinkedIn:**[NextBlock™](https://www.linkedin.com/in/nextblock/)** GitHub:**[nextblock-cms/nextblock](https://github.com/nextblock-cms/nextblock)** Medium:**[@nextblockcms](https://medium.com/@nextblockcms)** Dev.to:**[nextblockcms](https://dev.to/nextblockcms)

Built with ❤️ by the NextBlock™ Team. Licensed under AGPLv3.
