<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>ReactPress</title>
    <description>ReactPress is a modern publishing platform for blogs, company sites, and content-driven products. Install the CLI once, run init and dev, and get a public site, admin console, and API.</description>
    <link>https://reactpress.surge.sh/</link>
    <generator>ReactPress</generator>
    <lastBuildDate>Sun, 07 Jun 2026 16:04:33 GMT</lastBuildDate>
    <category>Quick Start</category><category>Platform</category><category>CLI &amp; Deploy</category>
    
    <item>
      <title>ReactPress Technical Architecture</title>
      <description><![CDATA[<figure><img src="/logo-400.png" alt="ReactPress technical architecture — CLI, NestJS API, MySQL, admin, and headless themes" loading="lazy" /><figcaption>Official architecture overview · reactpress.surge.sh</figcaption></figure>
<h2>ReactPress Technical Architecture</h2>
<p><strong>ReactPress</strong> is a monolithic-yet-modular publishing platform: one CLI bootstraps a NestJS API, MySQL database, built-in admin console, and optional headless visitor themes. Content is authored once in the admin and consumed everywhere through a stable REST envelope <code>{ "success": true, "data": ... }</code>.</p>
<p><img src="/logo-400.png" alt="ReactPress logo — atom mark with letter P" width="200" loading="lazy" /></p>
<blockquote><p><strong>One backend, many presentation layers.</strong> The same API powers the bundled admin UI, official themes, and your custom Next.js frontends.</p></blockquote>
<h3>Core layers</h3>
<table>
  <thead><tr><th>Layer</th><th>Technology</th><th>Role</th></tr></thead>
  <tbody>
    <tr><td>CLI</td><td><code>@fecommunity/reactpress</code></td><td><code>init</code>, <code>dev</code>, <code>build</code>, <code>doctor</code>, <code>status</code></td></tr>
    <tr><td>API Server</td><td>NestJS</td><td>REST on <code>:3002/api</code> — articles, pages, media, settings</td></tr>
    <tr><td>Database</td><td>MySQL</td><td>Persistent content store (Docker by default)</td></tr>
    <tr><td>Admin</td><td>Next.js + Ant Design</td><td>Authoring UI at <code>/admin</code></td></tr>
    <tr><td>Visitor theme</td><td>Next.js App Router</td><td>Headless SSR via <code>@fecommunity/reactpress-toolkit</code></td></tr>
  </tbody>
</table>
<figure><img src="/logo.png" alt="ReactPress architecture stack diagram" loading="lazy" /><figcaption>From CLI to NestJS API, admin console, and Theme Starter</figcaption></figure>
<h3>Learn more</h3>
<ul>
  <li><a href="https://reactpress.surge.sh/" rel="noopener noreferrer">reactpress.surge.sh</a> — product overview and documentation</li>
  <li><a href="https://github.com/fecommunity/reactpress" rel="noopener noreferrer">GitHub repository</a> — CLI, server, client, toolkit, templates</li>
  <li><a href="https://github.com/fecommunity/reactpress-theme-starter" rel="noopener noreferrer">Theme Starter</a> — official headless visitor theme (this repo)</li>
</ul>]]></description>
      <link>https://reactpress.surge.sh/article/what-is-reactpress</link>
      <guid>https://reactpress.surge.sh/article/what-is-reactpress</guid>
      <pubDate>Sat, 06 Jun 2026 16:04:33 GMT</pubDate>
      <category>Quick Start</category>
    </item>
    <item>
      <title>Quick Start with ReactPress</title>
      <description><![CDATA[<figure><img src="/logo-400.png" alt="Quick Start with ReactPress CLI" loading="lazy" /><figcaption>Three commands to spin up visitor site, admin, and API</figcaption></figure>
<h2>Quick Start</h2>
<p>The CLI orchestrates every service in the ReactPress architecture. After a global install, <code>init</code> writes project config and <code>dev</code> starts the API, admin, and default visitor site together.</p>
<h3>Prerequisites</h3>
<ul>
  <li><strong>Node.js 18+</strong> — required for the CLI</li>
  <li><strong>Docker</strong> — recommended; default bundled MySQL runs in a container</li>
  <li><strong>MySQL</strong> — optional; use your own instance instead of Docker</li>
</ul>
<h3>Install and run</h3>
<pre><code>npm i -g @fecommunity/reactpress@3
mkdir reactpress-theme-starter &amp;&amp; cd reactpress-theme-starter
reactpress init
reactpress dev</code></pre>
<p>When <code>dev</code> is ready, open the URLs printed in the terminal:</p>
<table>
  <thead><tr><th>Service</th><th>Typical URL</th></tr></thead>
  <tbody>
    <tr><td>Public site</td><td>http://localhost:3001</td></tr>
    <tr><td>Admin</td><td>http://localhost:3001/admin</td></tr>
    <tr><td>API health</td><td>http://localhost:3002/api/health</td></tr>
  </tbody>
</table>
<h3>Tips</h3>
<ul>
  <li>Run <code>reactpress</code> with no arguments for the interactive menu.</li>
  <li>Run <code>reactpress doctor</code> or <code>reactpress status</code> if something does not look right.</li>
</ul>]]></description>
      <link>https://reactpress.surge.sh/article/quick-start</link>
      <guid>https://reactpress.surge.sh/article/quick-start</guid>
      <pubDate>Thu, 04 Jun 2026 16:04:33 GMT</pubDate>
      <category>Quick Start</category>
    </item>
    <item>
      <title>ReactPress Architecture in Detail</title>
      <description><![CDATA[<figure><img src="/logo.png" alt="ReactPress architecture stack" loading="lazy" /><figcaption>CLI → NestJS + MySQL → Admin UI + headless Theme Starter</figcaption></figure>
<h2>Architecture in Detail</h2>
<p>ReactPress separates <strong>content management</strong> (NestJS + MySQL + admin) from <strong>presentation</strong> (visitor themes). The REST API is the contract between both sides.</p>
<h3>Request flow (headless mode)</h3>
<ol>
  <li>Editor publishes an article in the admin console.</li>
  <li>NestJS persists content to MySQL and exposes it at <code>GET /api/article/:id</code>.</li>
  <li>Theme Starter fetches via <code>themeApi</code> during SSR and renders App Router pages with ISR.</li>
  <li>Browser receives HTML; subsequent navigations hydrate client components from the toolkit.</li>
</ol>
<h3>Monorepo packages</h3>
<ul>
  <li><strong>CLI</strong> — project lifecycle and local orchestration</li>
  <li><strong>Server</strong> — NestJS modules for articles, categories, tags, pages, comments, knowledge, media</li>
  <li><strong>Client</strong> — bundled admin and default visitor UI</li>
  <li><strong>Toolkit</strong> — <code>@fecommunity/reactpress-toolkit</code> for third-party themes</li>
  <li><strong>Theme Starter</strong> — reference headless implementation (this repository)</li>
</ul>
<h3>Headless entry point</h3>
<p>Run <code>reactpress dev --api-only</code> when you only need the API and connect a custom theme such as Theme Starter with <code>pnpm dev</code>.</p>
<p>Documentation: <a href="https://reactpress.surge.sh/" rel="noopener noreferrer">reactpress.surge.sh</a></p>]]></description>
      <link>https://reactpress.surge.sh/article/platform-capabilities</link>
      <guid>https://reactpress.surge.sh/article/platform-capabilities</guid>
      <pubDate>Sun, 31 May 2026 16:04:33 GMT</pubDate>
      <category>Platform</category>
    </item>
    <item>
      <title>ReactPress CLI Reference</title>
      <description><![CDATA[<figure><img src="/logo-400.png" alt="ReactPress CLI workflow" loading="lazy" /><figcaption>Every command starts from the terminal after a global install</figcaption></figure>
<h2>CLI Reference</h2>
<p>After a global install, every workflow starts from the terminal.</p>
<p><img src="/logo-400.png" alt="ReactPress" width="180" loading="lazy" /></p>
<pre><code>npm i -g @fecommunity/reactpress@3</code></pre>
<table>
  <thead><tr><th>Command</th><th>Description</th></tr></thead>
  <tbody>
    <tr><td><code>reactpress</code></td><td>Interactive menu</td></tr>
    <tr><td><code>reactpress init</code></td><td>Set up a new project (config + .env)</td></tr>
    <tr><td><code>reactpress dev</code></td><td>Run site + admin + API locally</td></tr>
    <tr><td><code>reactpress dev --api-only</code></td><td>API only — for custom frontends</td></tr>
    <tr><td><code>reactpress doctor</code></td><td>Check your environment</td></tr>
    <tr><td><code>reactpress status</code></td><td>See what is running</td></tr>
    <tr><td><code>reactpress build</code></td><td>Production build</td></tr>
    <tr><td><code>reactpress start</code></td><td>Run production build</td></tr>
  </tbody>
</table>
<p>The monorepo on <a href="https://github.com/fecommunity/reactpress" rel="noopener noreferrer">GitHub</a> contains the CLI, client, server, toolkit, and templates. Contributors use <code>pnpm install</code> and <code>pnpm run dev</code> to develop the platform itself.</p>]]></description>
      <link>https://reactpress.surge.sh/article/cli-reference</link>
      <guid>https://reactpress.surge.sh/article/cli-reference</guid>
      <pubDate>Tue, 26 May 2026 16:04:33 GMT</pubDate>
      <category>CLI &amp; Deploy</category>
    </item>
    <item>
      <title>Deploy ReactPress to Production</title>
      <description><![CDATA[<figure><img src="/icon-512.png" alt="Headless theme deployment" loading="lazy" /><figcaption>Theme Starter on Vercel · ReactPress API on your infrastructure</figcaption></figure>
<h2>Deploy ReactPress</h2>
<p>Production deployment can be monolithic (CLI <code>build</code> + <code>start</code>) or split: NestJS API on your server, Theme Starter on Vercel.</p>
<h3>Production commands</h3>
<pre><code>npm i -g @fecommunity/reactpress@3
reactpress build
reactpress start</code></pre>
<p>Deploy with Vercel, PM2, Docker, or your preferred hosting. The public site, admin console, and API can run together or split across services in headless mode.</p>
<h3>Theme Starter on Vercel</h3>
<p>This repository deploys as a headless frontend. Point <code>REACTPRESS_API_URL</code> and <code>CLIENT_SITE_URL</code> at your ReactPress instance, or use <code>build:mock</code> for a demo without a backend. See <a href="https://reactpress.surge.sh/" rel="noopener noreferrer">reactpress.surge.sh</a> for deployment guides.</p>
<h3>Resources</h3>
<ul>
  <li><a href="https://reactpress.surge.sh/" rel="noopener noreferrer">reactpress.surge.sh</a> — official documentation</li>
  <li><a href="https://github.com/fecommunity/reactpress/blob/master/README.md" rel="noopener noreferrer">README</a> — deployment details for Docker and monorepos</li>
</ul>]]></description>
      <link>https://reactpress.surge.sh/article/deploy-reactpress</link>
      <guid>https://reactpress.surge.sh/article/deploy-reactpress</guid>
      <pubDate>Sat, 23 May 2026 16:04:33 GMT</pubDate>
      <category>CLI &amp; Deploy</category>
    </item>
    <item>
      <title>ReactPress Theme Starter Guide</title>
      <description><![CDATA[<figure><img src="/logo.png" alt="ReactPress Theme Starter — official headless visitor theme" loading="lazy" /><figcaption>Next.js 15 · Tailwind 4 · toolkit · mock mode · Vercel</figcaption></figure>
<h2>ReactPress Theme Starter</h2>
<p>This repository is the <strong>official headless visitor theme</strong> for ReactPress. It does not store content locally — every page is rendered from the ReactPress REST API (or built-in mock API during development).</p>
<h3>Project structure</h3>
<pre><code>app/              # App Router pages (home, article, category, search…)
components/       # Layout, article, comment, search UI
lib/reactpress/   # bootstrap, metadata, SEO, providers
lib/mock-api/     # Offline mock data for pnpm dev:mock
theme.json        # Template map + appearance panel schema</code></pre>
<h3>Data integration</h3>
<p>Server components call <code>fetch*PageProps(themeApi, …)</code> from <code>@fecommunity/reactpress-toolkit/theme/server</code>. Client islands use hooks and providers from <code>@fecommunity/reactpress-toolkit/ui</code>. All API responses follow <code>{ "success": true, "data": ... }</code>.</p>
<figure><img src="/icon-512.png" alt="Headless deployment — API and theme on separate hosts" loading="lazy" /><figcaption>Production: remote API + Vercel theme · Demo: REACTPRESS_MOCK_API=1</figcaption></figure>
<h3>Development modes</h3>
<ul>
  <li><code>pnpm dev:mock</code> — built-in mock API, no backend required (used by Vercel demo)</li>
  <li><code>pnpm dev</code> — connect to local or remote ReactPress API</li>
  <li><code>pnpm build:mock</code> — CI / demo production build with mock data</li>
</ul>
<h3>Appearance</h3>
<p>Light/dark mode and primary colors are driven by <code>theme.json</code> appearance settings (defaults: rose primary <code>#e11d48</code>, white / dark gray backgrounds) and applied at runtime via CSS variables.</p>
<p>Repository: <a href="https://github.com/fecommunity/reactpress-theme-starter" rel="noopener noreferrer">github.com/fecommunity/reactpress-theme-starter</a> · Docs: <a href="https://reactpress.surge.sh/" rel="noopener noreferrer">reactpress.surge.sh</a></p>]]></description>
      <link>https://reactpress.surge.sh/article/theme-starter</link>
      <guid>https://reactpress.surge.sh/article/theme-starter</guid>
      <pubDate>Wed, 20 May 2026 16:04:33 GMT</pubDate>
      <category>Platform</category>
    </item>
  </channel>
</rss>