SynaptikCMS 1.3 — New Plugin System

SynaptikCMS has one rule: keep the core small and fast. No feature makes it in unless most sites actually need it. That's why the core still ships as a flat-file CMS with no database, and why it stays fast even on modest shared hosting.

But "keep the core small" has a cost: what about the sites that do need a booking calendar, or a newsletter signup, or a handful of manual redirects after a URL migration? Bolting those into core would mean every SynaptikCMS install carries that weight, whether it needs it or not.

Version 1.3 solves this properly: plugins.

Self-contained, opt-in extensions

A plugin is a folder under /plugins/ with a plugin.json manifest. That's the whole contract. It owns its own PHP files, its own JSON data storage, and — if it needs one — its own page inside the admin panel. Installing one means uploading a folder; deleting one means removing it. There's no database migration to run and no leftover tables, because there's no database at all.

Plugins hook into the CMS in two ways:

  • Front-end behavior through the existing theme API — add_theme_action() and apply_theme_filters(), the same hooks themes have always used.
  • Admin integration through a new lightweight hook system built specifically for this release. A plugin registers a sidebar entry, and its page renders inside the standard admin layout — same sidebar, same top bar, same footer — without reimplementing any of that chrome itself.

Activation is a deliberate, separate step. Uploading a plugin's ZIP from Tools → Extensions installs it, but it stays dormant — no code runs — until you explicitly activate it. Activation state lives in plugins.json at the CMS root, so it's trivial to inspect or change by hand if you ever need to.

Four plugins, ready to install

Three plugins launched alongside the system, each addressing something people have been asking for:

Booking is the most involved of the three: a full appointment-booking module with weekly recurring availability, date-specific exceptions (holidays, one-off closures), multiple appointment types with their own durations, and an admin approval workflow — pending, confirmed, refused, cancelled. Confirmed appointments send .ics calendar attachments to both the client and the site admin automatically, and there's an optional callback-request flag for clients who'd rather get a phone call.

Newsletter handles email signups the way you'd want them handled: double opt-in by default, so a subscriber has to click a confirmation link before they're actually subscribed. From the admin side, you can send a one-click "digest" of everything published since the last send, or write a free-form newsletter using the same rich-text editor already used for articles.

Redirects is probably the most immediately useful if you're migrating an old site: manual 301 or 302 redirects from an old URL to a new one, plus an optional catch-all that sends genuine 404s to the homepage instead of a dead end. This prevents search engines from throwing errors or affecting your Google ranking.

Maintenance shows a maintenance page to visitors while you keep working on the site as a logged-in admin. Download them from the Plugins page.

All four plugins are separate downloads — they don't ship inside the core package, in keeping with the whole point of the plugin system.

What this unlocks going forward

The plugin system isn't just about these three launch plugins. It's infrastructure. Anyone building on SynaptikCMS now has a real path to add functionality without touching a single core file — which means core stays reviewable, stays fast, and stays exactly as heavy as your site needs it to be, not as heavy as the most demanding site out there needs it to be.

If you've been holding off on a feature request because "that doesn't really belong in a CMS core," this is where it goes instead.

Since 1.3: a few rough edges sanded down

Two patch releases have followed 1.3 so far. 1.3.1 added a "History" tab to Booking (so past appointments don't just disappear from the Requests view) and introduced a fourth plugin, Maintenance, which puts up a proper maintenance page for visitors while admins keep working normally behind the scenes. It also generalized the admin hook system further, so plugins like Maintenance and Redirects no longer need index.php to reference them by name at all.

1.3.2 was a cleanup pass: URL-building bugs on installs with a renamed admin folder, admin CSS that wasn't following the panel's light/dark toggle, and a Tools → Extensions page rebuilt to look and behave exactly like the Theme Manager it always should have matched.

Where to get it

The plugin ZIPs are available on the Plugins page. If you're building your own, the Plugin System documentation covers the manifest format, the admin hook API, and the conventions the built-in plugins follow — reading Redirects' source (it's the smallest of the three) is a fast way to see the whole pattern end to end.