From 47a22cb63342653181a40bf7cea70e1049b5835f Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Wed, 16 Sep 2026 03:35:10 +0200 Subject: [PATCH] docs: record two-repo layout decision --- .planning/PROJECT.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md index 4fc8889..b581b70 100644 --- a/.planning/PROJECT.md +++ b/.planning/PROJECT.md @@ -103,6 +103,7 @@ Quality - **Compatibility**: `vue-fonoteka-app` and `fonoteka-mcp` must run unchanged; the Nuxt app's requests define the contract and response shapes are not improved during the port - **Realtime**: keep the Centrifugo server and port only the publisher and token issuing — the Nuxt client connects to Centrifugo directly - **Plugins**: compiled at build time; no runtime plugin loading without a decision note +- **Two repositories**: `summercms.go` is the framework only (the `summer` packages, the CLI, the admin SPA shell, the parity harness tooling) and knows nothing about Płytarium; `fonoteka.go`, a sibling directory in the meta repo, is the application: a go.work workspace holding the ported plugins (user, websockets, translate, feedback, sitemap, fonoteka) and the app binary, requiring the framework by module path with a local replace during development. Roadmap phases name which repo each plan writes to; planning docs stay in `summercms.go/.planning` - **Workflow**: lean planning (few, large plans per phase), a plan-count checkpoint before PLAN.md files are written, unit tests as the last plan of every phase, `go vet` and `go test ./...` green at every commit - **Commits**: no co-author tags; one logical change per commit; planning docs and code in separate commits - **Core plugin contracts**: the PHP user, blog, pages and payment plugins are shared across many projects; the Go ports must preserve their contracts and the PHP originals are not changed as part of this project @@ -127,6 +128,7 @@ Quality | swaggo/swag for OpenAPI, not Huma | Comment annotations on plain net/http handlers keep 154 ported routes byte-compatible; Huma would reshape every handler | — Pending | | GORM + River share one `*sql.DB` (pgx stdlib) with a separate pgx pool for LISTEN/NOTIFY | River's documented GORM integration; transactional enqueue inside GORM transactions | — Pending | | Parity harness is a day-one workstream | Fixture recording needs only the running PHP backend; it is the acceptance mechanism for every port phase | — Pending | +| Framework and application in two repos from day one (`summercms.go`, `fonoteka.go`) | Retrofitting the split later is more disruptive; shared stack plugins can be extracted for keios.eu without touching the framework; the framework never imports an app | — Pending (chosen 2026-09-16) | ## Evolution @@ -146,4 +148,4 @@ This document evolves at phase transitions and milestone boundaries. 4. Update Context with current state --- -*Last updated: 2026-09-16 after project research* +*Last updated: 2026-09-16 after requirements definition*