How to Build a Blog with Next.js in 60 Seconds
Want a Next.js blog with SSR SEO, a real CMS Admin, and a Headless API — without wiring Strapi + custom Admin + a blog starter for weeks?
ReactPress is built for that path. One CLI command brings up:
- A Next.js visitor site (SSR/ISR, sitemap, OG tags)
- A Web Admin to write Markdown posts
- A NestJS API you can also use Headless
- Optional plugins (SEO meta, summaries, image optimization)
Typical time from install to a live local stack: about 60 seconds.
Prerequisites
- Node.js 18+ (LTS recommended)
- npm, pnpm, or yarn
- Empty folder for your site
Docker is not required. Default database is embedded SQLite.
Step 1 — Install the CLI (~15s)
npm i -g @fecommunity/reactpress@beta
Package: @fecommunity/reactpress.
Step 2 — Initialize the blog (~45s)
mkdir my-nextjs-blog && cd my-nextjs-blog
reactpress init
init generates config, boots API + Admin + theme, and prints URLs:
| Surface | URL |
|---|---|
| Next.js blog (visitor) | http://localhost:3001 |
| Admin | http://localhost:3001/admin/ |
| API | http://localhost:3002/api |
| Health | http://localhost:3002/api/health |
Step 3 — Log in and enable a theme
- Open http://localhost:3001/admin/
- Sign in:
admin/admin— change the password immediately - Appearance → Themes → install reactpress-theme-starter (or hello-world) → Enable
- Refresh http://localhost:3001 — your Next.js blog is live
Never ship the default credentials. Update the account in Admin or via ADMIN_USER / ADMIN_PASSWD before deploy.
Step 4 — Publish your first post
- Posts → New
- Title + Markdown body
- Optional category / tags
- Publish
- Open the post on http://localhost:3001
More UI detail: Create your first site · Create a post
Why this is a real Next.js blog (not a static mock)
| Capability | Out of the box |
|---|---|
| SSR / ISR | Official themes use Next.js for visitor SEO |
| CMS editing | Admin for posts, pages, media, comments |
| SEO | Theme sitemap / OG + SEO plugin for per-post meta |
| Headless | /api/article and toolkit SDK for custom React apps |
| Swap themes | npm catalog — keep Admin, change the frontend |
Custom theme path: Theme development · starter repo: reactpress-theme-starter
Optional — verify API & Headless
curl http://localhost:3002/api/health
# {"status":"ok"}
Consume content from another React app or a forked theme: Headless API guide.
Troubleshooting (fast)
reactpress doctor
reactpress logs --follow
reactpress stop # then re-run init if needed
Full checklist: Troubleshooting.
What people usually do next
| Goal | Guide |
|---|---|
| Understand the stack | What is ReactPress? · Core concepts |
| SEO for production | Site settings & SEO |
| Deploy | Production deployment · Docker |
| Compare to WordPress | ReactPress vs WordPress |
| Self-host checklist | Self-hosted CMS for React |
FAQ
Is the visitor site really Next.js?
Yes. Official themes are Next.js apps. Admin is a separate Vite SPA mounted under /admin/.
Can I keep my own Next.js app?
Yes. Point it at the Headless API, or fork the theme starter and keep ReactPress as the CMS.
Do I need Vercel?
No. Local init is enough to start; production can be any Node host, Docker, or your own pipeline.
How is this different from create-next-app + MDX?
MDX starters are great for git-only content. ReactPress adds Admin, media, comments, plugins, and a Headless API when non-developers need to publish.