ReactPress Logo ReactPress — The publishing system for React developers.

ReactPress

The publishing system for React developers.

Build blogs, documentation, company websites, and content-driven applications with React.


Quick start ↓  ·  Live demo  ·  Theme demo  ·  Docs  ·  中文

[![GitHub stars](https://img.shields.io/github/stars/fecommunity/reactpress?style=social)](https://github.com/fecommunity/reactpress/stargazers) [![npm downloads](https://img.shields.io/npm/dm/@fecommunity/reactpress?style=flat-square)](https://www.npmjs.com/package/@fecommunity/reactpress) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/fecommunity/reactpress/blob/master/LICENSE) [![NPM Version](https://img.shields.io/npm/v/@fecommunity/reactpress.svg?style=flat-square)](https://www.npmjs.com/package/@fecommunity/reactpress) [![Node.js](https://img.shields.io/badge/node-%3E%3D20-brightgreen?style=flat-square&logo=node.js&logoColor=white)](https://nodejs.org/) [![Lighthouse 95](https://img.shields.io/badge/Lighthouse-95%20%2F%20100%20SEO-0cce6b?style=flat-square&logo=lighthouse&logoColor=white)](https://reactpress-theme-starter.vercel.app) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://github.com/fecommunity/reactpress/pulls)

React Next.js NestJS Electron MySQL / SQLite


Star ReactPress on GitHub

If ReactPress saves you from stitching CMS + API + frontend — a ⭐ helps the next developer find it.

--- ## See it in action
![ReactPress CLI — install to live site in ~60 seconds](./public/usage.gif)
Desktop — offline writing with SQLite Desktop — offline writing, sync to production Official theme — search, comments, knowledge base Visitor site — search · comments · knowledge base · dark mode
Lighthouse: Performance 95, Accessibility 100, Best Practices 100, SEO 100 Scores on the official theme demo. Production results depend on hosting and content.
--- ## 30-second start ```bash npm i -g @fecommunity/reactpress@beta mkdir my-site && cd my-site reactpress init ``` **Requirements:** [Node.js 20+](https://nodejs.org/) · No Docker or external database > 4.x 发布在 npm **`@beta`** 标签(`@latest` 仍为 3.x)。 | Surface | URL | | :-------------- | :----------------------------------------------- | | **Public site** | http://localhost:3001 | | **Admin** | http://localhost:3001/admin/ (`admin` / `admin`) | | **API** | http://localhost:3002/api/health | `reactpress doctor` diagnoses setup issues when something does not start correctly.
~60 sec
init → live stack
95 / 100
Lighthouse performance
MIT
self-hosted
1 CLI
full platform
**Working?** [Star the repo](https://github.com/fecommunity/reactpress/stargazers) · [Open an issue](https://github.com/fecommunity/reactpress/issues) · [Read the docs](https://docs.gaoredu.com/)
--- ## Contents - [See it in action](#see-it-in-action) - [30-second start](#30-second-start) - [Contents](#contents) - [The problem](#the-problem) - [What is ReactPress?](#what-is-reactpress) - [What you can build](#what-you-can-build) - [Architecture](#architecture) - [Themes](#themes) - [Plugins](#plugins) - [Desktop-first writing](#desktop-first-writing) - [Why ReactPress?](#why-reactpress) - [What's new in 4.0](#whats-new-in-40) - [For developers](#for-developers) - [Deploy](#deploy) - [Roadmap (4.x)](#roadmap-4x) - [FAQ](#faq) - [Contributing](#contributing) --- ## The problem Modern content systems force a bad trade-off: | Path | Trade-off | | :--------------------------------- | :-------------------------------------------------------- | | **WordPress-style CMS** | Great editing — slow themes, coupled PHP stack | | **Static site generators** | Blazing fast — no real CMS for non-developers | | **Headless CMS** (Strapi, Payload) | Flexible API — you still assemble admin, frontend, deploy | > **Frontend teams deserve one publishing platform — not five repos to wire together.** ``` Before With ReactPress ────── ─────────────── Pick a CMS backend → reactpress init Write & manage content → Admin at /admin/ Visitors see your theme → http://localhost:3001 Something wrong? → reactpress doctor ``` --- ## What is ReactPress? ReactPress is **the publishing system for React developers** — build blogs, documentation, company websites, and content-driven applications with React. One CLI, not another headless backend to wire up. One CLI install. Everything included: | Layer | What you get | | :---------- | :------------------------------------------------------------ | | **CMS** | WordPress-style editing — posts, pages, media, categories | | **API** | Headless REST — React-first, Swagger-documented | | **Admin** | Web writing UI — no separate admin to build | | **Themes** | npm-installable Next.js frontends — swappable | | **Plugins** | Hook-based extensibility — SEO, summaries, image optimization | | **Desktop** | Local-first writing — SQLite, offline, sync upstream | > Content owned by the system. Frontend owned by developers. **It is not a CMS — it is a publishing platform.** --- ## What you can build | Use case | Why ReactPress fits | | :------------------------------- | :---------------------------------------------- | | Personal blogs | Admin writing + Lighthouse-fast Next.js theme | | Developer docs & knowledge bases | Built into official theme + API | | SaaS marketing sites | Headless API + custom Next.js frontend | | Multi-editor teams | Web admin for writers, theme repo for engineers | | Offline-first workflows | Desktop app with SQLite, sync when ready | --- ## Architecture ```mermaid flowchart TB subgraph Authoring["Authoring"] CLI["CLI
init · dev · doctor"] Admin["Admin
React + Vite · /admin/"] Desktop["Desktop
Electron · offline SQLite"] end subgraph Core["CMS Core"] API["CMS API
NestJS · :3002"] Plugins["Plugins
hooks · in-process"] DB[("SQLite / MySQL")] end subgraph Delivery["Delivery"] Theme["Active theme
Next.js · :3001"] Preview["Theme preview
:3003"] end CLI -->|"orchestrate"| API CLI --> Theme Admin -->|"REST"| API Desktop -->|"REST"| API Plugins --> API API --> DB API -->|"headless JSON"| Theme API --> Preview Admin -.->|"iframe"| Preview ``` ``` CMS Core → content, media, settings (NestJS) Admin UI → writing experience (React + Vite) API Layer → headless access (REST + Swagger) Theme System → visitor-facing frontend (Next.js, npm) Plugin System→ extensibility (hooks + Admin slots) Desktop App → offline writing (Electron + SQLite) ``` --- ## Themes Themes are fully replaceable Next.js frontends — not locked to core. Install and activate them in **Admin → Appearance → Themes**. Preview without a backend: ```bash npx create-next-app@latest my-blog --example "https://github.com/fecommunity/reactpress-theme-starter" --use-pnpm cd my-blog && pnpm dev:mock ``` **Live:** [reactpress-theme-starter.vercel.app](https://reactpress-theme-starter.vercel.app) · [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/fecommunity/reactpress-theme-starter) --- ## Plugins Extend without touching core. Install and enable plugins in **Admin → Plugins**. | Plugin | Capability | | :---------------- | :--------------------------------------------------- | | `seo` | Slug, keywords, meta description + Admin editor slot | | `hello-world` | Auto-generate article summaries | | `image-optimizer` | Batch WebP optimization for media | Dev guide: [plugins/README.md](./plugins/README.md) · Starter template: [reactpress-plugin-starter](https://github.com/fecommunity/reactpress-plugin-starter) --- ## Desktop-first writing Write offline. Sync when ready. No Docker required. **[Download desktop client](https://docs.gaoredu.com/docs/tutorial-extras/desktop-client)** (macOS / Windows / Linux) · or build from source: ```bash pnpm dev:desktop # monorepo root pnpm build:desktop # build installer ``` SQLite local storage · offline editing · remote API mode · sync to production · [desktop/README.md](./desktop/README.md) --- ## Why ReactPress? | | ReactPress | WordPress | Static sites | Headless CMS | | :-------------------------: | :---------- | :-------------- | :-------------- | :------------------ | | **Editing experience** | Yes | Yes | No | Partial | | **Frontend freedom** | Yes | No | Build-time only | Yes | | **Full system out of box** | Yes | Via plugins | No | No | | **Time to start** | ~1 min | Hours | Fast per site | Setup + assembly | | **Local / offline writing** | Desktop app | No | No | No | | **Lighthouse performance** | 95² | Theme-dependent | Excellent | Depends on frontend | **vs WordPress** — same editing workflow, modern Next.js delivery, no PHP theme bloat. **vs Static generators** — keep the speed, add a real CMS. **vs Strapi / Payload** — they ship a backend; ReactPress ships the **full publishing platform**. ² [Official theme demo](https://reactpress-theme-starter.vercel.app) --- ## What's new in 4.0 Codename **Extend** — plugins, desktop, npm themes. Still **one CLI, one Admin.** ```bash npm i -g @fecommunity/reactpress@beta ``` [4.0 guide](./docs/tutorial/tutorial-extras/reactpress-4-0.md) · [Migrate from 3.x](./docs/tutorial/tutorial-extras/migration-3-to-4.md) --- ## For developers Headless by default. Connect any frontend via REST. ```bash curl -H "X-API-Key: YOUR_KEY" \ "http://localhost:3002/api/article/headless/list?status=publish&page=1&pageSize=10" ``` | Resource | Link | | :------------- | :------------------------------------------------------------------------------------ | | Swagger | http://localhost:3002/api | | Theme dev | [themes/README.md](./themes/README.md) | | Plugin dev | [plugins/README.md](./plugins/README.md) | | Theme starter | [reactpress-theme-starter](https://github.com/fecommunity/reactpress-theme-starter) | | Plugin starter | [reactpress-plugin-starter](https://github.com/fecommunity/reactpress-plugin-starter) |
CLI commands & ports (local init) | Command | Action | | :------------------------------- | :------------------------------------------ | | `reactpress` / `reactpress init` | Initialize and start (SQLite + API + theme) | | `reactpress init --force` | Re-initialize existing project | | `reactpress doctor` | Diagnose environment and URLs | | `reactpress logs` | Tail API logs | | `reactpress stop` | Stop API and site services | | Service | URL / port | | :---------- | :--------------------------- | | Public site | http://localhost:3001 | | Admin | http://localhost:3001/admin/ | | API | http://localhost:3002/api | Monorepo contributors: see [CONTRIBUTING.md](./CONTRIBUTING.md) and package READMEs under `server/`, `web/`, `themes/`.
--- ## Deploy `reactpress init` runs a local production-style stack (SQLite API + theme with embedded admin). For VPS, Docker, PM2, and backups, see the [deployment docs](https://docs.gaoredu.com/). Theme-only hosting: deploy [reactpress-theme-starter](https://github.com/fecommunity/reactpress-theme-starter) and point it at your API. --- ## Roadmap (4.x) - Plugin npm catalog - Desktop auto-update, tray, shortcuts - Theme & plugin marketplace --- ## FAQ
Do I need Docker? No for the default CLI flow — `reactpress init` uses embedded SQLite. Docker is only needed if you configure MySQL via `embedded-docker` in `.reactpress/config.json`. The desktop app also runs on SQLite without Docker.
Can I use my own frontend? Yes — headless REST API with API keys. Fork the [official starter](https://github.com/fecommunity/reactpress-theme-starter) or build against `/api/article`, `/api/page`, etc.
How is this different from WordPress? Same admin-driven workflow, but a faster default theme, a cleaner headless path, and no plugin bloat for a modern React/Next.js frontend.
Is 4.0 production-ready? 4.0 is in active beta (`4.0.0-beta.18` at time of writing). The published CLI supports `init`, `doctor`, `logs`, and `stop`. See the [migration guide](./docs/tutorial/tutorial-extras/migration-3-to-4.md) before upgrading production.
WordPress alternative? Headless CMS? Next.js blog? Yes — ReactPress targets all three: self-hosted WordPress-style editing, headless REST for custom frontends, and an official Next.js theme with Lighthouse 95 performance out of the box.
--- ## Contributing [Contributing](./CONTRIBUTING.md) · [Code of Conduct](./CODE_OF_CONDUCT.md) · [Security](./SECURITY.md) [Issues](https://github.com/fecommunity/reactpress/issues) · [Pull requests](https://github.com/fecommunity/reactpress/pulls)
fecommunity
FECommunity
want2sleeep
SleepSheep
fantasticit
fantasticit
chenbo29
chenbo29
redteav2
redteav2
trashken
trashken
franz007
franz007
funtime1
funtime1
scottdeift
scottdeift
TwoDollars666
TwoDollars666
Xiaonan2020
Xiaonan2020
gaoredu
redtea
lsr365400
lsr365400
---
**MIT License** · © ReactPress / FECommunity
Star ReactPress on GitHub

The publishing system for React developers.
Help us reach more builders — ⭐ on GitHub.


Star History Chart