# 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`.