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.