diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 08b31d1..7daa075 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -30,6 +30,10 @@ Decimal phases appear between their surrounding integers in numeric order. - [ ] **Phase 14.2: Local Fonoteka frontend on local SummerCMS backend** - vue-fonoteka-app locally against fonoteka.go - [ ] **Phase 15: Journal plugin** - Port Golem15.Journal to sm-journal-plugin - [ ] **Phase 16: grzybyfunkcjonalne.pl on reusable blog views** - First blog on SummerCMS +- [ ] **Phase 17: Blog companions** - Port sitemap, menu and FAQ as shared plugins, with a framework menu-item type registry +- [ ] **Phase 18: Payment Gateway** - Port Golem15.PaymentGateway and its Stripe operator, with Horoskopia as the acceptance consumer +- [ ] **Phase 19: Chat and ChatChannels** - Port Golem15.Chat and Golem15.ChatChannels on lighthouse +- [ ] **Phase 19.1: Chat satellites** - Port chatbots, chatvideo, forum, herald and userfriends - [ ] **Phase 20: Płytarium cutover** - Parity harness green, both real clients run unchanged in production ## Phase Details @@ -918,6 +922,89 @@ Plans: Plans: - [ ] TBD (run $gsd-plan-phase 16 to break down) +### Phase 17: Blog companions + +**Goal:** The sitemap, menu and FAQ plugins run on SummerCMS as shared `sm-*-plugin` repos, so a blog site can manage its menus, FAQs and sitemap in the admin again instead of hardcoding them in the Nuxt app. +**Mode:** mvp +**Depends on:** Phase 15, Phase 16 +**Repos:** `sm-sitemap-plugin`, `sm-menu-plugin`, `sm-faq-plugin` (new, under `git.golem15.com/golem15/`, see `.planning/notes/core-plugins-own-repos.md`); `summercms.go` for the menu-item type registry; `sm-journal-plugin` for an additive registration of its item types; `sm-grzybyfunkcjonalne-app` to move its FAQ and menu into the plugins +**Port sources:** `Golem15.Sitemap` at `/media/nvme/dev/golem15/fonoteka/plugins/golem15/sitemap`; `Golem15.Menu` and `Golem15.Faq` at `/media/nvme/dev/golem15/grzybyfunkcjonalne.pl/plugins/golem15/{menu,faq}`. Todos: `sitemap-plugin-port.md`, `menu-plugin-port.md`, `faq-plugin-port.md`. Inventory: `.planning/notes/core-plugin-port-inventory.md`. +**Requirements**: TBD +**Success Criteria** (what must be TRUE): + + 1. The three plugins port their PHP schema, models, admin screens and import commands 1:1, each in its own repo with a README. + 2. The framework has a typed successor of the `pages.menuitem.listTypes`, `getTypeInfo` and `resolveItem` events. Journal registers its item types through it, and both menu and sitemap consume it. + 3. `sitemap.xml` and `sitemap.xsl` match the PHP output, including the `frontend_url` domain rewrite and hreflang. Menu and FAQ expose public read APIs that a Nuxt layer can consume. + 4. grzybyfunkcjonalne.pl reads its menu and FAQ from the plugins instead of app config. + 5. The new code has unit tests, delivered in the phase's last plan. + +**Plans:** 0 plans + +Plans: +- [ ] TBD (run $gsd-plan-phase 17 to break down) + +### Phase 18: Payment Gateway + +**Goal:** `Golem15.PaymentGateway` and its Stripe operator run on SummerCMS as shared plugins whose contracts let Horoskopia's horoscope plugin create orders, take payments and react to payment events, as it does on PHP. +**Mode:** mvp +**Depends on:** Phase 15 +**Repos:** `sm-paymentgateway-plugin` and `sm-pgstripe-plugin` (new, under `git.golem15.com/golem15/`); `summercms.go` only if a framework feature is missing +**Port sources:** `Golem15.PaymentGateway` v2.6.0 and `Golem15.PGStripe`, at `/media/nvme/dev/golem15/horoskopia.eu/plugins/golem15/{paymentgateway,pgstripe}` (starter submodule `wn-paymentgateway-plugin`, branch `upgrade`). Acceptance consumer: Horoskopia's `horoscope` plugin, which uses `Order`, `OrderFactory`, `Cart`/`Item`/`Details`, `Settings` and `Payment`. +**Splits:** Stripe subscriptions (`Golem15.PaymentGatewaySubscriptions`, 5.5k LOC, used by Horoskopia and four other projects) and any further Stripe add-ons go into decimal phases 18.1, 18.2 and so on if the Phase 18 discussion decides they do not fit. +**Requirements**: TBD +**Success Criteria** (what must be TRUE): + + 1. Payment (Created, Sent, Accepted, Rejected, Canceled, Refunded) and Order (12 states, all refund paths) state machines port with the PHP transitions, and use exact decimal money. + 2. Payment operators register at build time through a Go interface that succeeds `core/Operator` and the `paymentgateway.booted` config push. Cash, manual transfer and Stripe operators are implemented. The `_paymentgateway/{operator}/{mode?}/{result?}` notification route keeps its PHP behavior. + 3. The Order and Payment events, their mail templates, the admin screens (orders, payments, settings) and the scheduled cancel/finish/update commands are ported. Plugin contracts (tables, event names, config keys) stay non-breaking. + 4. A host test proves the order-create, Stripe-pay and order-paid flow that Horoskopia relies on. + 5. The new code has unit tests, delivered in the phase's last plan. + +**Plans:** 0 plans + +Plans: +- [ ] TBD (run $gsd-plan-phase 18 to break down) + +### Phase 19: Chat and ChatChannels + +**Goal:** `Golem15.Chat` and `Golem15.ChatChannels` run on SummerCMS as shared plugins, with realtime delivery through `lighthouse`, ready for the Wavepath port. +**Mode:** mvp +**Depends on:** Phase 11 +**Repos:** `sm-chat-plugin` and `sm-chatchannels-plugin` (new, under `git.golem15.com/golem15/`); `summercms.go` only if `lighthouse` is missing a feature +**Port sources:** `/media/nvme/dev/jz/wavepath.org/plugins/golem15/{chat,chatchannels}`. Wavepath is the heaviest user. Check its copy (with `root_id` threading) against the starter's before choosing the source. +**Requirements**: TBD +**Success Criteria** (what must be TRUE): + + 1. The chat schema, models, adapters (context-agnostic groups), jobs, commands and routes port 1:1. ChatChannels plugs into chat through the same adapter contract. + 2. Realtime broadcasts and channel authorization go through `lighthouse` (publisher, `Authorizer` per namespace). No WebSockets plugin is ported. + 3. Public API payloads match PHP for the routes Wavepath's clients call. + 4. The new code has unit tests, delivered in the phase's last plan. + +**Plans:** 0 plans + +Plans: +- [ ] TBD (run $gsd-plan-phase 19 to break down) + +### Phase 19.1: Chat satellites + +**Goal:** The remaining shared plugins that Wavepath's app plugin requires run on SummerCMS: chatbots, chatvideo, forum, herald and userfriends. +**Mode:** mvp +**Depends on:** Phase 19 +**Repos:** one `sm-*-plugin` repo each, under `git.golem15.com/golem15/` +**Port sources:** `/media/nvme/dev/jz/wavepath.org/plugins/golem15/{chatbots,chatvideo,forum,herald,userfriends}` +**Requirements**: TBD +**Success Criteria** (what must be TRUE): + + 1. Each plugin ports its schema, models, routes and events 1:1 against its PHP original. + 2. Herald (Web Push) has a decision note naming its VAPID/Web Push dependency before code lands. Chatbots is wired to `sm-golem-plugin` where the PHP original calls Golem. + 3. Userfriends is checked against fonoteka first, so there is one shared copy. + 4. The new code has unit tests, delivered in the phase's last plan. + +**Plans:** 0 plans + +Plans: +- [ ] TBD (run $gsd-plan-phase 19.1 to break down) + ### Phase 20: Płytarium cutover **Goal**: The parity harness is green on every manifest route and `vue-fonoteka-app` and `fonoteka-mcp` run unchanged against the Go backend in daily use in production — the Płytarium definition of done. @@ -937,7 +1024,7 @@ Plans: ## Progress **Execution Order:** -Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10 → 11 → 12 → 13 → 14 → 14.1 → 14.2 → 15 → 16 → 20 +Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10 → 11 → 12 → 13 → 14 → 14.1 → 14.2 → 15 → 16 → 17 → 18 → 19 → 19.1 → 20 (Phase 2 depends on Phase 1's command kernel; the two are no longer parallel.) | Phase | Plans Complete | Status | Completed | @@ -962,6 +1049,10 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → | 14.2. Local Fonoteka frontend on local SummerCMS backend (INSERTED) | 0/TBD | Not started | - | | 15. Journal plugin | 4/4 | Complete | 2026-10-06 | | 16. grzybyfunkcjonalne.pl on reusable blog views | 0/TBD | Not started | - | +| 17. Blog companions | 0/TBD | Not started | - | +| 18. Payment Gateway | 0/TBD | Not started | - | +| 19. Chat and ChatChannels | 0/TBD | Not started | - | +| 19.1. Chat satellites | 0/TBD | Not started | - | | 20. Płytarium cutover | 0/TBD | Not started | - | ## Backlog