Skip to content

Plugins

A plugin is a TypeScript package that adds its own database tables, API routes and admin pages to the CMS. Plugins are compiled into the API Worker at build time, so there is no runtime code loading.

Open Installed Plugins in the admin sidebar (Admin and above). It lists every plugin bundled into your deployment with its version and an on/off switch.

  • Toggling takes effect immediately, with no redeploy. A disabled plugin’s routes return 404 and its sidebar entries disappear.
  • A plugin with dependencies stays off while those dependencies are off.
  • With no saved choice, a bundled plugin is enabled.
  • Disabling a plugin does not delete its data.

Adding a plugin that is not bundled yet is a code change and a redeploy: add the package and register it in apps/api/src/plugins/registered-plugins.ts.

Plugin Purpose
commerce Product catalog, cart, checkout, orders and Paystack payments
hello A minimal example plugin used as a reference for authors

When enabled, Commerce adds a Commerce group to the sidebar with Products, Categories, Orders, Customers and Settings. Its API lives under /api/plugins/commerce/v1/* (admin, session required) and /api/plugins/commerce/public/v1/* (storefront, unauthenticated).

  • Catalog and order management need the Editor role; the customers list needs Admin.
  • Storefront customers are ordinary CMS accounts with role none, using the same authentication as the rest of the site.
  • Settings holds store name, default currency and the storefront URL used in email links.
  • Payments use Paystack: set the PAYSTACK_SECRET_KEY Worker secret. Without it the payment routes return 503 (“Payments are not configured”).
  • @kenresoft-cms/astro exposes storefront methods under cms.commerce.

The plugin SDK (@kenresoft-cms/plugin-sdk), the manifest format, permissions, events and the reference plugin are documented in the repository’s docs/PLUGINS.md. A plugin author guide is not published on this site yet.