Jakub Zych c87148a34f feat(10-02): backend strings, controller messages and declarative toolbar
- phrasebook ships the backend::lang admin strings (pl, en) with CLDR
  plural maps, loads them as namespace backend, applies
  pact.HasLangOverrides trees (lang/<locale>/<namespace>/<group>.yaml)
  after every namespace, and fails activation when a backend key cannot
  convert to plural forms
- Translator.Forms, Bundle, Resolved and Has serve keys as CLDR form maps
- Public GET /lang returns every backend::lang key for the request
  locale over the fallback locale, Cache-Control no-cache
- config_list, config_form and config_relation accept a strict messages
  block; omitted keys take framework defaults, schemas serve every message
  as CLDR forms, and activation fails on a missing phrase key
- toolbar.buttons is an ordered [create, delete] list; the Winter string
  form, duplicates, unknown actions and delete without showCheckboxes fail
  at boot, and create is dropped when the controller has no form
- Form schema serves the raw Winter redirects; scaffold emits the list
  syntax; form and relation schema routes are typed in the admin OpenAPI
2026-09-27 16:16:32 +02:00
2026-09-16 09:36:57 +02:00

SummerCMS (Go)

A Go rewrite of the WinterCMS/OctoberCMS content management framework, built for the Golem15 stack.

SummerCMS keeps what makes WinterCMS productive — plugins that extend each other, YAML-driven admin forms, models/controllers/components, scaffolding commands — and drops the parts that do not survive a compiled language.

Status

Pre-alpha. Planning and research. Nothing runs yet.

Why Go

The first SummerCMS attempt was Scala 3. Three infrastructure modules were built (config, i18n, console) before the effort stalled on ecosystem depth: proven, reusable libraries for things like an OAuth2/OIDC server did not exist, and building them from scratch was out of budget. Go's ecosystem covers every concern in the Illuminate module map with maintained, widely used libraries. See .planning/notes/why-go-not-scala.md and .planning/research/go-ecosystem.md.

v1 target

Port Płytarium (the fonoteka project): a headless WinterCMS backend with a Nuxt 4 frontend, 160 API routes, its own OAuth2 provider, Discogs and AI integrations, queued jobs, realtime notifications, and organization-scoped collections.

Definition of done for v1: vue-fonoteka-app runs unchanged against the Go backend.

See .planning/notes/v1-target-plytarium.md.

Architecture decisions so far

  • Compiled plugins, Caddy/xcaddy style: a plugins/ workspace of Go modules, a generated import list, scaffold and rebuild commands, watch-rebuild in dev.
  • A sandboxed WASM extension API for untrusted third-party extensions comes later, behind a stable core plugin API.
  • Headless first. Admin is a schema-driven SPA. Server-rendered themes come with the second port target (keios.eu).

Layout

.planning/   GSD planning artifacts (notes, research, seeds, roadmap)

Everything else will be created by the GSD roadmap phases.

Description
Content management framework for Go,
https://summercms.io
Readme 9.6 MiB
Languages
Go 73.5%
TypeScript 11.3%
Vue 5.7%
Shell 4.3%
JavaScript 2.6%
Other 2.6%