Files
summercms/docs/architecture/introduction.md
Jakub Zych f3e8a984b0 docs(quick-261015-w7f): docs since v0.1.14 and the Upgrading to 0.2 notes
- new setup/upgrading.md: version rule, the two 0.2 boot refusals with
  their fixes, behaviour changes, and what 0.2 adds since 0.1
- architecture module table lists all 28 modules
- WinterCMS map: cache and reorder are provided; rows for field types,
  sanitizing, singletons, API tokens, CORS, Turnstile, menu item types
- configuration keys for CORS profiles, api_docs, auth.cookie, turnstile
- index, setup intro and frontend page link the new topics
2026-10-15 23:24:56 +02:00

4.0 KiB

title, description, section, order
title description section order
Architecture introduction How a SummerCMS application is built: one Go binary with compiled plugins, a headless JSON API, an embedded admin SPA and console commands. architecture 10

Architecture introduction

A SummerCMS application is one Go binary. The framework modules, the application's plugins, the embedded admin SPA and every console command are compiled into it. You deploy that file and its config/ directory; nothing is installed or loaded at runtime.

One binary, compiled plugins

A plugin is a Go package that implements party.Plugin and registers itself from init with party.Register. The application lists the plugins it uses in its summer.yaml manifest. summer build reads that manifest, generates plugins.gen.go (a blank import for every plugin and the ordered PluginIDs list) and a main.go, then runs go build. Adding or removing a plugin is a rebuild, not a runtime switch.

This replaces the WinterCMS plugin directory scan. The compiler checks every plugin against the interfaces it claims to implement, and a missing dependency fails the build or the boot, never a later request.

Headless by design

SummerCMS serves a JSON API and the admin SPA. It has no themes, CMS pages or frontend components: the public site is a separate application that calls the API and subscribes to realtime channels. The admin is a compiled Vue application that boardwalk serves from the binary, and it reads the admin API that cabana builds from each plugin's fields.yaml and columns.yaml.

The framework modules

Each framework module is one Go package under modules/, documented by its README and its API reference page.

Concern Modules
Plugins and the container party, pact, backpack, festival, compass, signpost
HTTP surf, towel, wire, bouncer, wristband, fetchguard
Data lagoon, beachcomber
Admin cabana, boardwalk, seaglass
Services cooler, phrasebook, postcard, conga, lighthouse, flare, sunscreen
Console and tooling bonfire, tide, sunrise
Utilities sieve

What runs where

Two programs carry console commands:

  • The summer tool is the developer CLI. You install it once with go install ./cmd/summer. It builds and watches applications (summer build, summer dev), scaffolds plugins and their parts (summer make:plugin, summer make:model and the other make: commands), records and replays API parity fixtures and builds these docs.
  • The application binary, for example bin/hello, carries the runtime commands: serve, migrate, route:list, queue:work, admin:create and the commands its plugins add. It is what you run in production.

Some summer commands, such as summer migrate and summer serve, run the matching command of the application binary in the current application directory, building it first when it is missing. The Installation guide walks through both programs.