Skip to content

[Feature] Theme system — install, develop, preview, publish, and operate #71

@gaoredu

Description

@gaoredu

Is your feature request related to a problem? Please describe.

ReactPress aims to be WordPress-like for themes, but the platform stack is incomplete on HEAD:

  • themes/package.json calls reactpress theme add, but CLI has no theme command; server has no extension module
  • Toolkit defines preview API, 60s ISR, and ports 3003–3008 — server/CLI are not wired
  • Themes can be copied into the repo but cannot be installed, upgraded, previewed, or kept fresh after publish like a real theme platform

Describe the solution you'd like

One shared contract in toolkit; thin server/CLI wrappers. Phased delivery:

P0 — Core

  • Server extension module: install, activate, preview-draft API
  • CLI: theme add|list|update|remove + themes.lock.json + runtime at .reactpress/runtime/{id}/
  • Move theme-registry into toolkit (server/CLI import shared code, no require('../cli/lib/...'))
  • On publish / update / delete / scheduled publish → on-demand Next.js revalidation; toolkit path helpers + HMAC /api/revalidate in starter

P1 — Developer & discovery

  • reactpress theme dev <id> — symlink themes/{id} in dev, inject REACTPRESS_API_URL
  • Multi-slot preview pool (3003–3008), hot-swap draft tokens
  • Hosted catalog.json, theme search, admin Discover tab

P2 — Production

  • Zero-downtime activation: build → health check → atomic active-theme.json; theme rollback
reactpress theme add <spec>
reactpress theme list
reactpress theme update [--check] [id]
reactpress theme remove <id>
reactpress theme dev <id>
reactpress theme rollback

Describe alternatives you've considered

  • Manual runtime copy — no lock file, no admin, breaks on every edit
  • Webhooks-only cache refresh — every site builds a sidecar; does not fix 60s ISR for editors
  • Duplicate registry in server and CLI — drifts; breaks standalone API deploy
  • Single preview port — works but slow; iframe blanks on every theme switch
  • PM2 hard restart for prod switch — current behavior; risks 502 with no rollback

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions