Files
summercms/.planning/phases/11.2-ready-to-share-summercms-io-website-and-newsletter-plugin/11.2-DISCUSSION-LOG.md

7.5 KiB

Phase 11.2: Ready to share: summercms.io website and newsletter plugin - Discussion Log

Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.

Date: 2026-09-29 Phase: 11.2-ready-to-share-summercms-io-website-and-newsletter-plugin Areas discussed: Website build & hosting, Landing page content, Signup & opt-in flow, Plugin shape & future


Website build & hosting

Option Description Selected
Prerendered (vite-ssg) Vite + Vue with build-time prerendering
Nuxt 4 (static generate) Same stack as vue-fonoteka-app, nuxt generate ✓
Plain Vue SPA Empty HTML shell until JS runs
Option Description Selected
Embedded in the Go binary go:embed site + docs, one binary ✓
Served from disk by the binary dist/ next to the binary
Static host/CDN + API binary Separate hosting, needs CORS
Option Description Selected
English only Docs are English
English + Polish vue-i18n + phrasebook for site and mail ✓
Option Description Selected
New framework module Reusable public static handler in summercms.go
In sm-summercms-app only App-local handler
You decide Research picks

User's choice: Nuxt 4 static generate, embedded in the binary, EN + PL. Serving: "we do as we did in wintercms - sm-summercms-plugin that does all the stuff around serving data. this is proven approach, used in figs.org.pl, golem15.com etc". Notes: The user first asked what "serving code" meant. After the explanation they chose a site plugin, which added a fourth repo.


Landing page content

Option Description Selected
Hero + signup Pitch with signup in the hero ✓
What it is / features Feature list ✓
Coming from WinterCMS Side-by-side, links to the 11.1 concept map ✓
Status & roadmap Honest pre-release block ✓

User's choice: All four. Notes on the WinterCMS section: "nice if it would have some cool way that it started in October (OctoberCMS) went trough WinterCMS but now it's time for Summer". Other answers: status tone was clear pre-release (the recommended option); no repo link yet (recommended); "Built by Golem15" credit (recommended).


Signup & opt-in flow

Question Options Selected
Spam guard Honeypot + rate limit / Cloudflare Turnstile Honeypot + rate limit
Consent Required checkbox / Notice text only Required checkbox
Re-signup Same neutral response / Tell the user their status Same neutral response
After confirm Thank-you page + welcome mail / Thank-you page only Thank-you page + welcome mail

Plugin shape & future

Question Options Selected
Users Standalone subscribers / Optional link to users Standalone
Schema Subscribers only, sending-ready / Port all PHP tables now Subscribers only, sending-ready
Admin List+filter+delete / Also CSV export / Also manual add/edit Free text: "add/edit/delete are must be, csv export - i don't think we have that ready within framework so it waits."
Module path git.golem15.com / github.com/golem15com git.golem15.com
Admin add status Pending + confirmation mail / Admin chooses Pending + confirmation mail

Notes: The first question batch in this area failed in the UI and was asked again.


Claude's Discretion

  • How long tokens stay valid, the resend throttle, the token format and the URL scheme.
  • Visual design within the Direction C v2 brand, and the copy.
  • Whether the plugin or the root app embeds the Nuxt build, and how the docs are mounted.

Deferred Ideas

  • CSV export of subscribers, which needs framework support.
  • Sending newsletters and merging audiences, in a later phase.
  • Renaming fonoteka.go to sm-fonoteka-app.
  • A source repo link on the landing page.
  • Polish docs.


Update 2026-10-01: Alpha 0.1 landing page

Date: 2026-10-01 Phase: 11.2, reshaped into "summercms.io Alpha 0.1 landing page on SummerCMS" (newsletter split into 11.3) Areas discussed: Database at runtime, Server and deploy flow, Design to Nuxt, Get started accuracy, Docs and release

Database at runtime

Option Description Selected
Run Postgres on server Stock serve path, no framework change ✓ (already installed)
Make DB optional in framework surf serve skips lagoon without DB config
Site plugin's own serve cmd DB-less command for / and /docs

User's choice: Postgres 15.19 is already installed and running on rome (Debian 12).

Option Description Selected
Use PG 15 on rome as-is Deploy against 15, docs keep 16
Upgrade rome to PG 16 PGDG repo
Verify on 15, then relax the docs Run DB tests on 15, document "15 or newer" ✓
Option Description Selected
Dedicated role + database summercms role, summercms_io DB, migrate per deploy ✓
Peer auth over Unix socket No password, OS user = DB role

Server and deploy flow

Question Options Selected
Build where Locally + rsync / On rome from git / CI Locally + rsync
/backend exposure Not exposed / Exposed / Restricted Not exposed
TLS Existing certbot / Something else Existing certbot
Cutover Replace nginx block in place / Staging subdomain Replace in place
Port and user You decide / I'll specify You decide

Design to Nuxt

Question Options Selected
Fonts @nuxt/fonts self-host / Google CDN @nuxt/fonts self-host
CSS Plain CSS with tokens / Tailwind v4 Plain CSS with tokens
Sun art From live site / I'll provide / Placeholder From live site: http://summercms.io/logo.png
i18n @nuxtjs/i18n en only / Hardcoded @nuxtjs/i18n en only
SEO Basic meta + OG / Full @nuxtjs/seo / Meta only Full @nuxtjs/seo (like fonoteka)
showRays/scrollSpy Hardcode on / App config App config

Get started accuracy

Finding: git.golem15.com/golem15/summercms requires login, and the terminal card had no clone step.

Question Options Selected
Source repo Make public at launch / Hide links / Public mirror Make public at launch
Terminal copy Add a clone line / Keep verbatim / go install @latest Add a clone line
Verify commands Scripted check / Manual UAT Scripted check

Docs and release

Question Options Selected
Docs → landing link Optional site_url in site.yaml / Leave as-is Optional site_url
Release tag Tag framework v0.1.0 / Track master Tag v0.1.0
Repo home Sibling of summercms.go / Also meta-repo submodule Sibling of summercms.go

Claude's Discretion (2026-10-01)

  • The port, system user and paths on rome; where the embeds live (plugin or root app); 404 handling; image derivatives and the OG layout; where the command check lives; reduced-motion handling.

Deferred Ideas (2026-10-01)

  • go install ...@latest as the install path (needs a go-gettable module path).
  • A CI build pipeline.
  • An optional DB in summer serve.