From a64d5aaaa7ca31950938e3d9f9bcd505c8c452ad Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Mon, 28 Sep 2026 01:27:19 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20capture=20exploration=20=E2=80=94=20bac?= =?UTF-8?q?kend-deployment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .planning/notes/go-vs-php-on-plytarium.md | 34 +++++++++++++++++++ .../nest-framework-packages-under-modules.md | 20 +++++++++++ .../pending/per-module-readmes-after-nest.md | 14 ++++++++ .../todos/pending/refresh-fonoteka-readme.md | 14 ++++++++ .../todos/pending/rewrite-summercms-readme.md | 18 ++++++++++ 5 files changed, 100 insertions(+) create mode 100644 .planning/notes/go-vs-php-on-plytarium.md create mode 100644 .planning/todos/pending/nest-framework-packages-under-modules.md create mode 100644 .planning/todos/pending/per-module-readmes-after-nest.md create mode 100644 .planning/todos/pending/refresh-fonoteka-readme.md create mode 100644 .planning/todos/pending/rewrite-summercms-readme.md diff --git a/.planning/notes/go-vs-php-on-plytarium.md b/.planning/notes/go-vs-php-on-plytarium.md new file mode 100644 index 0000000..796663c --- /dev/null +++ b/.planning/notes/go-vs-php-on-plytarium.md @@ -0,0 +1,34 @@ +--- +title: Go vs PHP on plytarium.com — what stays, what swaps, why login is not the flip +date: 2026-09-28 +context: /gsd-explore after a working Phase 10 admin login; asked how deployment of that backend will look +--- + +# Go vs PHP on plytarium.com + +The login that already worked is the Phase 10 admin SPA inside the `fonoteka` binary, talking to local Postgres. That is not a DNS flip of `https://plytarium.com`. + +## What stays on the production box + +- Operator-owned nginx vhost. Merge snippets after `nginx -t`. Do not overwrite the vhost in the dark (`fonoteka/docs/deploy/plytarium.com.md`). +- `vue-fonoteka-app` and `fonoteka-mcp` — unchanged. Same origin `https://plytarium.com`. CORS stays a fallback, not the model. +- Centrifugo and Typesense — same servers. Go only publishes and issues tokens. + +## What actually swaps + +- php-fpm / Winter → one `fonoteka` binary. Admin SPA is already `embed.FS` in the binary (Phase 10 D-01). No separate admin deploy. +- MariaDB → Postgres with Polish ICU `pl-PL`. This is a data move, not a config tweak. Boot already refuses a non-`pl-PL` database. +- Redis `queue:work` → River on that same Postgres (Phase 11, not built yet). + +## When the flip is allowed + +Phase 15, after jobs/search (11) and the remaining API routes (12–14). Success criteria: parity harness green on all 154 routes; Nuxt and MCP complete a real session against Go. + +Until then, pointing plytarium.com at this binary would take the public app and MCP offline. A side host running admin-only Go is a different, earlier picture and was not chosen as the first deploy target. + +## Docs that were stale when this was discussed + +- `summercms.go/README.md` still said nothing runs. +- `fonoteka.go/README.md` still described the Phase 3 genre slice and never mentioned admin login. + +Intended split: `fonoteka.go` stays a short run card; `summercms.go` is the onboarding README and includes an honest "not a PHP flip yet" cutover section. diff --git a/.planning/todos/pending/nest-framework-packages-under-modules.md b/.planning/todos/pending/nest-framework-packages-under-modules.md new file mode 100644 index 0000000..8a5d9ac --- /dev/null +++ b/.planning/todos/pending/nest-framework-packages-under-modules.md @@ -0,0 +1,20 @@ +--- +title: Nest framework packages under modules/ — same beach names +date: 2026-09-28 +priority: high +area: summercms.go +--- + +Mechanical layout change only. Do not rename packages. + +Move each framework library from the repo root into `modules//` so `ls` shows `modules/`, `cmd/`, `admin/`, `examples/`, `internal/` instead of `compass` next to `go.mod`. + +In scope (beach-named libs and peers): backpack, boardwalk, bonfire, bouncer, cabana, compass, festival, fetchguard, lagoon, pact, party, phrasebook, postcard, surf, tide, towel, wire, wristband. + +Stay at repo root: `admin/`, `cmd/`, `examples/`, `internal/`, `scripts/`, `go.mod`, `README.md`. + +Import paths become `git.golem15.com/golem15/summercms/modules/`. Rewrite importers in this repo, `../fonoteka.go` (~124 files), and `examples/`. Then `go test ./...` in both repos. + +Do this before Phase 11 adds more root packages. Do not remap onto Winter `system` / `backend` / `cms`. + +After the move is green, run the sibling todo that writes a short `README.md` per module. diff --git a/.planning/todos/pending/per-module-readmes-after-nest.md b/.planning/todos/pending/per-module-readmes-after-nest.md new file mode 100644 index 0000000..28784a1 --- /dev/null +++ b/.planning/todos/pending/per-module-readmes-after-nest.md @@ -0,0 +1,14 @@ +--- +title: Short README.md per modules/* after the nest +date: 2026-09-28 +priority: medium +area: summercms.go/modules +--- + +Blocked on `.planning/todos/pending/nest-framework-packages-under-modules.md`. + +After the packages live under `modules/`, spawn a GSD explore / researcher pass (one agent, not a hand-written dump) to write a short `README.md` in each `modules//`. + +Each file: one paragraph on what the package is for, who imports it, and one example entry point (`Package.Type` or file). No architecture essays. No copy-paste of planning docs. + +The top-level `summercms.go/README.md` should then link the directory instead of explaining every beach name inline. diff --git a/.planning/todos/pending/refresh-fonoteka-readme.md b/.planning/todos/pending/refresh-fonoteka-readme.md new file mode 100644 index 0000000..c6c3c4d --- /dev/null +++ b/.planning/todos/pending/refresh-fonoteka-readme.md @@ -0,0 +1,14 @@ +--- +title: Refresh fonoteka.go README — short status plus migrate/serve/login +date: 2026-09-28 +priority: high +area: ../fonoteka.go/README.md +--- + +Keep this file a short run card. Do not duplicate the framework story. + +Update status from "Phase 3 vertical slice / 15 genres" to what actually runs: `golem15.user` + `golem15.fonoteka`, Postgres with Polish ICU `pl-PL`, `./bin/fonoteka migrate` then `serve`, admin SPA login at the configured admin prefix. + +Keep the existing DSN / JWT secret / collation block. Add the minimum env and URL needed to log in the way it already worked. Point at `../summercms.go/README.md` for architecture and the plytarium.com cutover picture. + +Lives in the sibling repo; planning docs stay in `summercms.go`. diff --git a/.planning/todos/pending/rewrite-summercms-readme.md b/.planning/todos/pending/rewrite-summercms-readme.md new file mode 100644 index 0000000..2ae90aa --- /dev/null +++ b/.planning/todos/pending/rewrite-summercms-readme.md @@ -0,0 +1,18 @@ +--- +title: Rewrite summercms.go README — onboard, recreate login, honest cutover +date: 2026-09-28 +priority: high +area: summercms.go/README.md +--- + +Replace `README.md`. It currently says pre-alpha / nothing runs. That is false. + +The long story lives here, not in `fonoteka.go`. Include: + +- What this repo is (framework only; app is the sibling `fonoteka.go`). +- Two-repo layout and `go.work` replace during development. +- How to recreate the Phase 10 admin login that already worked (point at `fonoteka.go` for DSN / migrate / serve; do not pretend this repo is the app binary). +- Current status vs the Phase 15 PHP flip — honest "not yet" cutover section drawn from `.planning/notes/go-vs-php-on-plytarium.md`. +- After the `modules/` nest lands, point at `modules//README.md` instead of listing beach-named packages at the repo root. + +Do not invent a production runbook. Operator procedure stays in the PHP `docs/deploy/plytarium.com.md` until Phase 15.