Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions