Overview
A plugin extends Flexweg CMS by hooking into the publish pipeline, the editor, the dashboard, or the admin UI. Plugins are JavaScript modules that register filters (mutate values), actions (side effects), blocks (editor content), dashboard cards, and regeneration targets — all through a single register(api) function.
Manifest reference
Every plugin exports a single PluginManifest from its manifest.ts.
Hooks
Hooks are how plugins observe and mutate the publish pipeline. There are two kinds:
Blocks
Plugins can contribute editor blocks — paragraphs, embeds, layout primitives, complex content types. The block API is the same one theme blocks use — only the registration channel differs.
Dashboard cards
Plugins can contribute self-contained cards to the admin dashboard. The four built-in stat cards (Posts / Pages / Categories / Tags) live above; plugin-contributed cards appear in a 1 / 2 / 3-column responsive grid below.
Settings page
Plugins can ship a configuration page reachable at /settings/plugin/. The page lives inside the standard Settings layout — same chrome as General + Performance — so admins get a consistent surface.
External bundle
External plugins ship as a .zip containing a pre-built ESM bundle, get uploaded into Flexweg via the Install plugin UI, and load at runtime via dynamic import() — no admin rebuild required.
Creating an external plugin
This guide walks through authoring a plugin distributed as a .zip and loaded at runtime by Flexweg CMS — no rebuild of the admin required.