{"id":50691961,"url":"https://github.com/fecommunity/reactpress-theme-starter","last_synced_at":"2026-06-13T07:00:59.939Z","repository":{"id":363075789,"uuid":"1261219969","full_name":"fecommunity/reactpress-theme-starter","owner":"fecommunity","description":"🚀 Official Next.js 15 theme for ReactPress — headless blog with mock mode, knowledge base, comments, and one-click Vercel deploy.","archived":false,"fork":false,"pushed_at":"2026-06-07T15:09:45.000Z","size":7950,"stargazers_count":7,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-06-10T04:22:01.179Z","etag":null,"topics":["blog","blog-theme","cms","headless-cms","nextjs","react","reactpress","starter-kit","tailwindcss","theme","typescript","vercel"],"latest_commit_sha":null,"homepage":"https://reactpress-theme-starter.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fecommunity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-06T11:55:00.000Z","updated_at":"2026-06-07T23:11:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fecommunity/reactpress-theme-starter","commit_stats":null,"previous_names":["fecommunity/reactpress-theme-starter"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/fecommunity/reactpress-theme-starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fecommunity%2Freactpress-theme-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fecommunity%2Freactpress-theme-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fecommunity%2Freactpress-theme-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fecommunity%2Freactpress-theme-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fecommunity","download_url":"https://codeload.github.com/fecommunity/reactpress-theme-starter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fecommunity%2Freactpress-theme-starter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34183109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","blog-theme","cms","headless-cms","nextjs","react","reactpress","starter-kit","tailwindcss","theme","typescript","vercel"],"created_at":"2026-06-09T03:44:02.690Z","updated_at":"2026-06-11T05:00:52.249Z","avatar_url":"https://github.com/fecommunity.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003ca href=\"https://reactpress.surge.sh/\"\u003e\n  \u003cimg src=\"./public/logo.png\" alt=\"ReactPress\" width=\"480\" /\u003e\n\u003c/a\u003e\n\n\u003cbr /\u003e\n\n**ReactPress Theme Starter**\n\nA lightweight, simple, and easy-to-use Next.js theme, powered by [ReactPress](https://github.com/fecommunity/reactpress).\n\n\u003ca href=\"https://reactpress-theme-starter.vercel.app\"\u003e\n  \u003cimg src=\"./public/home-dark.png\" alt=\"ReactPress Theme Starter preview\" width=\"100%\" /\u003e\n\u003c/a\u003e\n\n\u003cbr /\u003e\n\n[Live Demo](https://reactpress-theme-starter.vercel.app) · [Documentation](https://reactpress.surge.sh/) · [简体中文](./README_zh.md)\n\n\u003cbr /\u003e\n\n\u003cimg src=\"https://img.shields.io/badge/Next.js_15-000?style=flat-square\u0026logo=next.js\u0026logoColor=white\" alt=\"Next.js 15\" /\u003e\n\u003cimg src=\"https://img.shields.io/badge/React_19-61dafb?style=flat-square\u0026logo=react\u0026logoColor=white\" alt=\"React 19\" /\u003e\n\u003cimg src=\"https://img.shields.io/badge/Tailwind_4-38bdf8?style=flat-square\u0026logo=tailwindcss\u0026logoColor=white\" alt=\"Tailwind CSS 4\" /\u003e\n\u003cimg src=\"https://img.shields.io/badge/TypeScript-0074c1?style=flat-square\u0026logo=typescript\u0026logoColor=white\" alt=\"TypeScript\" /\u003e\n\u003cimg src=\"https://img.shields.io/badge/License-MIT-22c55e?style=flat-square\" alt=\"MIT License\" /\u003e\n\u003ca href=\"https://github.com/fecommunity/reactpress-theme-starter/stargazers\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/fecommunity/reactpress-theme-starter?style=flat-square\u0026logo=github\" alt=\"GitHub stars\" /\u003e\n\u003c/a\u003e\n\n\u003cbr /\u003e\n\n**If this project helps you, a ⭐ on GitHub helps others discover it.**\n\n\u003c/div\u003e\n\n---\n\n## Try in 60 seconds (no backend)\n\nPreview the full theme UI with built-in sample data — no ReactPress install required.\n\n### Option A — `create-next-app` (recommended)\n\nBootstrap from this repository with the [official Next.js CLI](https://nextjs.org/docs/app/api-reference/cli/create-next-app):\n\n```bash\nnpx create-next-app@latest reactpress-theme-starter --example \"https://github.com/fecommunity/reactpress-theme-starter\" --use-pnpm\ncd reactpress-theme-starter\npnpm dev:mock\n```\n\n### Option B — clone manually\n\n```bash\ngit clone https://github.com/fecommunity/reactpress-theme-starter.git\ncd reactpress-theme-starter\npnpm install\npnpm dev:mock\n```\n\nOpen **http://localhost:3001** — same mode as the [live demo](https://reactpress-theme-starter.vercel.app).\n\n### Deploy to Vercel (zero env vars)\n\nOne-click deploy uses [`vercel.json`](./vercel.json) with mock data — no backend required.\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Ffecommunity%2Freactpress-theme-starter\u0026project-name=reactpress-theme\u0026repository-name=reactpress-theme\u0026demo-title=ReactPress%20Theme%20Starter\u0026demo-description=Next.js%2015%20headless%20blog%20theme%20with%20mock%20mode%20%E2%80%94%20no%20backend%20required\u0026demo-url=https%3A%2F%2Freactpress-theme-starter.vercel.app\u0026demo-image=https%3A%2F%2Fraw.githubusercontent.com%2Ffecommunity%2Freactpress-theme-starter%2Fmaster%2Fpublic%2Fhome-dark.png)\n\n---\n\n## What is this?\n\nThis repository is the **public-facing theme** for ReactPress: routing, layout, SEO, and UI. It does **not** include a CMS or admin panel — all content comes from a ReactPress backend via [`@fecommunity/reactpress-toolkit`](https://www.npmjs.com/package/@fecommunity/reactpress-toolkit).\n\n```text\nReactPress API  ──REST──▶  Theme Starter (Next.js)  ──▶  Public Site\n```\n\n**Stack:** Next.js 15 · React 19 · Tailwind CSS 4 · Node.js 20+ · pnpm 9\n\n**Includes:** articles, archives, search, CMS pages, knowledge base, comments, light/dark mode, RSS/sitemap, and an optional embedded mock API for offline development.\n\n### Why this theme?\n\n|                           | ReactPress Theme Starter                                                 | Generic Next.js blog template |\n| :------------------------ | :----------------------------------------------------------------------- | :---------------------------- |\n| CMS \u0026 admin               | ✅ [ReactPress](https://github.com/fecommunity/reactpress) backend + CLI | ❌ Build or wire your own     |\n| Try without backend       | ✅ `pnpm dev:mock`                                                       | ❌ Usually needs content/API  |\n| Knowledge base \u0026 comments | ✅ Built-in                                                              | ❌ Roll your own              |\n| Customizable appearance   | ✅ Admin console + `theme.json`                                          | ❌ Hard-coded or manual       |\n| Lighthouse performance    | ✅ **95** out of the box (see below)                                     | ❌ Varies widely              |\n\n### Performance\n\nBuilt on Next.js 15 App Router with server rendering, static generation, and minimal client JavaScript — the theme delivers strong Core Web Vitals without extra tuning.\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"./public/lighthouse.png\" alt=\"Lighthouse audit: Performance 95, Accessibility 100, Best Practices 100, SEO 100\" width=\"720\" /\u003e\n\n\u003c/div\u003e\n\n| Category       | Score   |\n| :------------- | :------ |\n| Performance    | **95**  |\n| Accessibility  | **100** |\n| Best Practices | **100** |\n| SEO            | **100** |\n\n**Core Web Vitals** (homepage audit on the [live demo](https://reactpress-theme-starter.vercel.app)):\n\n| Metric                         | Result     |\n| :----------------------------- | :--------- |\n| First Contentful Paint (FCP)   | **0.4 s**  |\n| Largest Contentful Paint (LCP) | **1.0 s**  |\n| Total Blocking Time (TBT)      | **150 ms** |\n| Cumulative Layout Shift (CLS)  | **0**      |\n| Speed Index                    | **1.1 s**  |\n\n**Why it feels fast:**\n\n- **SSR + SSG** — pages render on the server; static routes are pre-built at deploy time\n- **Zero layout shift** — stable typography and layout from first paint\n- **Light client bundle** — content-first UI without heavy runtime overhead\n- **SEO-ready** — metadata, Open Graph, RSS, and sitemap included\n\n---\n\n## Quick Start\n\n**Requirements:** Node.js 20+, pnpm 9+\n\n### Recommended — ReactPress CLI\n\nThe fastest way to run a full stack (visitor site, admin console, and API) is the [ReactPress CLI](https://reactpress.surge.sh/). No manual `.env` wiring for a standard setup.\n\n```bash\nnpm i -g @fecommunity/reactpress@3\nreactpress init\nreactpress dev\n```\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"./public/cli.png\" alt=\"ReactPress CLI interactive menu\" width=\"100%\" /\u003e\n\n\u003c/div\u003e\n\nAfter startup, open the URLs printed in the terminal (typically the public site, admin, and API). Use `reactpress doctor` if something fails to start.\n\n**Use this theme with the CLI**\n\n1. Clone this repository and install dependencies (`pnpm install`).\n2. Start the API with `reactpress dev --api-only` (or run the full stack and point the theme at the API).\n3. Copy [`.env.example`](./.env.example) to `.env` if needed — default local API is `http://localhost:3002/api`.\n4. In the theme directory, run:\n\n```bash\npnpm dev\n```\n\nOpen **http://localhost:3001** — the theme loads live content from your ReactPress API.\n\nRemote API during development:\n\n```bash\npnpm dev -- --remote-origin api.yoursite.com\n```\n\n### Local theme preview (mock — no backend)\n\nTo work on UI, layout, or styling **without** installing ReactPress or running the API, use the built-in mock server:\n\n```bash\ngit clone https://github.com/fecommunity/reactpress-theme-starter.git\ncd reactpress-theme-starter\npnpm install\npnpm dev:mock\n```\n\nOpen **http://localhost:3001** — sample data comes from [`lib/mock-api/data.ts`](./lib/mock-api/data.ts). This is the same mode used by the [Vercel demo](https://reactpress-theme-starter.vercel.app).\n\n---\n\n## Commands\n\n| Command              | Purpose                                                       |\n| :------------------- | :------------------------------------------------------------ |\n| `pnpm dev`           | Theme dev server + live ReactPress API (CLI or remote)        |\n| `pnpm dev:mock`      | Theme dev server + built-in mock API (no backend)             |\n| `pnpm build:mock`    | Production build with mock data (Vercel demo / offline build) |\n| `pnpm build`         | Production build (API must be reachable at build time)        |\n| `pnpm start`         | Run production server on port **3001**                        |\n| `pnpm run check`     | ESLint + Prettier                                             |\n| `pnpm run typecheck` | TypeScript check                                              |\n\nFor full-stack local development (site + admin + API), prefer **`reactpress dev`** from the ReactPress CLI — see [Quick Start](#quick-start).\n\n---\n\n## Configuration\n\nWhen using **`pnpm dev`** against a live API, copy [`.env.example`](./.env.example) to `.env`. Mock mode (`pnpm dev:mock`) and the ReactPress CLI handle most setup for you.\n\n| Variable                         | Description                                     |\n| :------------------------------- | :---------------------------------------------- |\n| `REACTPRESS_API_URL`             | Server-side API base URL (include `/api`)       |\n| `NEXT_PUBLIC_REACTPRESS_API_URL` | Client-side API URL; use `/api` for same-origin |\n| `CLIENT_SITE_URL`                | Public site URL for SEO and Open Graph          |\n| `REACTPRESS_MOCK_API`            | Set to `1` to enable the embedded mock API      |\n\nSee `.env.example` for optional variables (subpath deploy, GitHub OAuth, remote dev origin).\n\n---\n\n## Deployment\n\n### Demo (Vercel)\n\nImport this repo as-is — [`vercel.json`](./vercel.json) uses `build:mock` with mock data. See [Deploy to Vercel](#deploy-to-vercel-zero-env-vars) above for the one-click button with live demo preview.\n\n\u003e The [live demo](https://reactpress-theme-starter.vercel.app) runs in mock mode (UI + sample data only).\n\n### Production\n\nDeploy as a headless frontend pointed at your ReactPress API:\n\n1. Set `REACTPRESS_API_URL`, `NEXT_PUBLIC_REACTPRESS_API_URL`, and `CLIENT_SITE_URL`\n2. Build with `pnpm build` (not `build:mock`)\n3. Start with `pnpm start` or your platform's Next.js runtime\n\n`pnpm build` prefetches pages from the API — ensure the API is reachable at build time.\n\n---\n\n## Project Layout\n\n```text\napp/           App Router pages, feeds, sitemap, mock API route\ncomponents/    Layout, article, search, widgets\nlib/           mock-api/, reactpress/ utilities\nscripts/       dev, build, and smoke-test scripts\ntheme.json     Theme manifest (routes, appearance schema)\n```\n\nRoute templates are declared in [`theme.json`](./theme.json). Appearance (colors, logo, navigation) is configured in the ReactPress admin console.\n\n---\n\n## FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDo I need ReactPress to preview the theme?\u003c/strong\u003e\u003c/summary\u003e\n\nNo. Run `pnpm dev:mock` for a full UI preview with sample data. Install [ReactPress CLI](https://reactpress.surge.sh/) when you want a real CMS, admin panel, and API.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow is this different from WordPress or Ghost themes?\u003c/strong\u003e\u003c/summary\u003e\n\nThis is a **headless frontend** — content lives in ReactPress (REST API + admin). You deploy the Next.js theme separately and point it at your API. See [ReactPress docs](https://reactpress.surge.sh/) for the full stack.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCan I use my own Next.js components or fork the theme?\u003c/strong\u003e\u003c/summary\u003e\n\nYes. MIT licensed. Customize components under `app/` and `components/`, or declare routes in [`theme.json`](./theme.json). Pull requests welcome — see [Contributing](./CONTRIBUTING.md).\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWhere do I report bugs in the CMS or CLI?\u003c/strong\u003e\u003c/summary\u003e\n\nTheme issues → [this repo](https://github.com/fecommunity/reactpress-theme-starter/issues). Core ReactPress (API, admin, CLI) → [fecommunity/reactpress](https://github.com/fecommunity/reactpress/issues).\n\n\u003c/details\u003e\n\n---\n\n## Community\n\n| Channel         | Link                                                                                      |\n| :-------------- | :---------------------------------------------------------------------------------------- |\n| Q\u0026A \u0026 showcase  | [GitHub Discussions](https://github.com/fecommunity/reactpress-theme-starter/discussions) |\n| Bug reports     | [Issues](https://github.com/fecommunity/reactpress-theme-starter/issues)                  |\n| ReactPress core | [github.com/fecommunity/reactpress](https://github.com/fecommunity/reactpress)            |\n| Documentation   | [reactpress.surge.sh](https://reactpress.surge.sh/)                                       |\n\n---\n\n## Contributing\n\n|                                             |                                   |\n| :------------------------------------------ | :-------------------------------- |\n| [Contributing](./CONTRIBUTING.md)           | Setup, conventions, pull requests |\n| [Contributing (中文)](./CONTRIBUTING_zh.md) | 中文贡献指南                      |\n| [Code of Conduct](./CODE_OF_CONDUCT.md)     | Community standards               |\n| [Security](./SECURITY.md)                   | Report vulnerabilities            |\n\n---\n\n## Links\n\n|                   |                                                                                                  |\n| :---------------- | :----------------------------------------------------------------------------------------------- |\n| ReactPress docs   | [reactpress.surge.sh](https://reactpress.surge.sh/)                                              |\n| ReactPress source | [github.com/fecommunity/reactpress](https://github.com/fecommunity/reactpress)                   |\n| Toolkit           | [@fecommunity/reactpress-toolkit](https://www.npmjs.com/package/@fecommunity/reactpress-toolkit) |\n| Theme schema      | [theme.manifest.schema.json](./theme.manifest.schema.json)                                       |\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[MIT License](./LICENSE) · © ReactPress / FECommunity\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffecommunity%2Freactpress-theme-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffecommunity%2Freactpress-theme-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffecommunity%2Freactpress-theme-starter/lists"}