create-contioreach-blog

Create a blog wired to ContioReach in one command. Pick Next.js, Nuxt, Astro, SvelteKit, Remix or React — it runs on demo content straight away, no signup needed.
479
Install
npm install create-contioreach-blog
Latest Version:0.1.1
License:MIT
Last Updated:Oct 8, 2026
Links: GitHub  ·  npm
Maintainer: contioreach

create-contioreach-blog

Create a blog wired to ContioReach in one command. It runs on demo content straight away — no signup, no login, no questions about workspaces.

npx create-contioreach-blog my-blog
┌   create-contioreach-blog
│
◇  Which framework?
│  Next.js (recommended)
│
◇  Starter downloaded
◆  Demo API key added to .env.local
◆  Revalidation route ready: src/app/api/revalidate/all/route.js
◇  Dependencies installed
│
◇  Next ──────────────────────────────────╮
│  cd my-blog                             │
│  npm run dev   → http://localhost:3000  │
├─────────────────────────────────────────╯
│
●  You're on demo content. To use your own posts:
│    1. Sign up free: https://app.contioreach.com/signup?ref=cli&fw=next
│    2. Copy your API key into .env.local
│
└  Happy publishing!

Options

Option
[project-name] Folder to create. Asked for when left out (default my-blog).
--framework <name> Skip the question: next, nuxt, astro, sveltekit, remix or react.
--no-install Skip installing dependencies.

Works with npm create contioreach-blog, pnpm create contioreach-blog, yarn create contioreach-blog and bun create contioreach-blog too — dependencies are installed with whichever one ran it.

What it does

  1. Downloads the framework's starter from github.com/contioreach.
  2. Copies the starter's .env.example to .env.local (Next.js) or .env (everything else). That file already holds the read-only key of the ContioReach demo workspace.
  3. Renames the project in package.json.
  4. Installs dependencies.

The publish webhook route is already part of every starter (/api/revalidate/all). REVALIDATION_SECRET stays empty: it is generated in your own dashboard when you set the webhook up, and the route rejects every call until then.

The demo key is not hard-coded in the CLI. It lives in each starter's .env.example (and DEMO_API_KEY constant), so rotating it is a commit to the starters and every CLI version picks it up.

The demo banner

Every starter shows a banner above the site header while CMS_API_KEY is the demo key — on a deployed site too, so nobody launches a public blog on demo content by accident. The check runs on the server; the browser only ever gets a status, never the key. The close button hides it for the browser session.

Paste your own key and restart, and the banner goes away by itself. If ContioReach rejects the key, the banner turns into an "Invalid API key" notice instead.

When something goes wrong

Situation What happens
Folder exists and isn't empty Asks for another name. Never overwrites files.
Node too old for the framework Stops before downloading and names the version needed.
No internet / GitHub unreachable Stops with a message. Nothing is left behind.
Dependency install fails Keeps the project and prints the install command to run yourself.
Ctrl+C Stops any running install and deletes the partly created folder.

Develop

npm install
npm test
node bin/create-contioreach-blog.js my-blog --no-install

Related Packages

@hellyeah/x-ray

Multi-platform analytics SDK for browser, React, Next.js, Remix, Vue, Svelte, Nu...

20,021
@preprio/toolkit

Prepr personalization, A/B testing and preview toolkit for React, Next.js, Nuxt,...

8,356 1
@easy-cms/core

Embedded, code-first headless CMS for Nuxt and Next.js

25,029 2
@bynaree/orino

SEO and GEO audit tool for developers. Audits Next.js, Astro, SvelteKit, Nuxt, a...

1,558
kintura

Install production-grade motion page templates into your project — one command,...

175

Version History

Version Released License
0.1.1 MIT
0.1.0 MIT
Pre-releases (1)
Version Released License
0.0.0-stage