--- title: Golem15 plugin inventory and core plugin port order (Phases 17–19.1) date: 2026-10-07 context: /gsd-explore session on porting the remaining core plugins after Journal --- # Golem15 plugin inventory and port order A survey of every `plugins/golem15/*` copy under `/media/nvme/dev/golem15` and `/media/nvme/dev/jz/wavepath.org` on 2026-10-07. "Live" counts top-level projects. LOC is PHP without tests or vendor, measured on the largest copy. ## Port status - **Ported:** user, translate, journal, golem, feedback. Apparatus became framework packages (`apparatus-dissolved-into-framework.md`). - **Not ported, covered by the framework:** websockets. `modules/lighthouse` and its `centrifugo` driver already provide the publisher, the token route, the subscribe proxy and per-namespace `Authorizer`s, which are what Wavepath's code calls (`BroadcastEventJob`, `CentrifugoClient`, `AuthorizerRegistry`, `ChannelAuthorizerInterface`). - **Not ported:** knobwidget and dualformfield/dualformwidget. They are about 150 LOC of form widgets each, and the admin SPA field types replace them. ## Shared plugins and how much each is worth porting | Plugin | Live projects | LOC | Decision | |---|---|---|---| | paymentgateway + pgstripe | 19 installed, 7 real users | 18.7k + 1.9k | Phase 18 | | paymentgatewaysubscriptions | 5 | 5.5k | Phase 18.1 if it does not fit in 18 | | sitemap | 21 | 1.9k | Phase 17 | | menu | 8 | 1.0k | Phase 17 | | faq | 16 | 0.5k | Phase 17 | | chat | 17 installed, Wavepath is the heaviest user | 4.4k | Phase 19 | | chatchannels | Wavepath | 2.8k | Phase 19 | | chatbots, chatvideo, forum, herald, userfriends | Wavepath (userfriends also in PHP fonoteka; fonoteka.go has no port) | 0.6k–1.7k each | Phase 19.1 | | oauthserver | Wavepath | 5.5k | With the Wavepath port, on `wristband` | | newsletter | horoskopia | 2.3k | Backlog 999.1 | | github, quote | 16 / 13 | 3.4k / 0.8k | Not scheduled. Quote is cheap because golem and journal are ported | | seo, sitemanager | 6 | 4.3k / 0.9k | Not scheduled. Phase 16 replaces both with `@nuxtjs/seo` and app content | | blog, bloghub, ai | 3–4 | 7.5k–9.6k | Not scheduled. This is the older blog line; journal is its successor | Third-party plugins in many projects: `winter/location` is in 19, `winter/blocks` in 13 and `winter/pages` in 10. Whether paymentgateway shipping or user profiles need `winter/location` is an open question. ## PaymentGateway facts that matter for Phase 18 - **Which projects really use it:** sklep.figs (shop), portal.golem15.com (invoicer), getaround.world (tourism with its own StripeConnect operator, quotify, subscriptions), quotify.pro, drzewo.net, horoskopia.eu and queststream.online. In the others it is installed only because the starter ships it. - **Drivers:** Stripe is the only real driver. No PayU, Przelewy24, PayPal or Tpay code exists anywhere. - **Operator registration:** operators extend the abstract `core/Operator` and push their class onto the config key `golem15.paymentgateway.operators` from inside the `paymentgateway.booted` event. In Go this becomes build-time registration through an interface. - **Webhooks:** one CSRF-exempt notification route, `_paymentgateway/{operator}/{mode?}/{result?}`. pgstripe adds `POST /webhook/stripe/subscriptions` for the subscriptions plugin. - **State machines and events:** - Payment: Created, Sent, Accepted, Rejected, Canceled, Refunded. - Order: 12 states and about 18 transitions, 7 of them refund paths. - 19 Order events and 5 Payment events drive about 26 mail templates. - `OrderPaid` is the event consumers listen to most. - **Acceptance consumer:** Horoskopia. Its `horoscope` plugin (37k LOC, 65 routes, Nuxt 4 frontend `vue-horoskopia-app`) requires PaymentGatewaySubscriptions and PGStripe. It uses `Order`, `OrderFactory`, `Cart`/`Item`/`Details`, `Settings`, `Payment`, `Subscription`, `SubscriptionPlan` and the `SubscriptionGateway` contract. ## Port order decided on 2026-10-07 1. **Phase 17, Blog companions:** sitemap, menu and FAQ, plus a framework menu-item type registry. 2. **Phase 18, Payment Gateway:** paymentgateway and pgstripe. Subscriptions and Stripe add-ons go into 18.1, 18.2 and so on if the Phase 18 discussion splits them out. 3. **Phase 19, Chat and ChatChannels.** 4. **Phase 19.1, Chat satellites:** chatbots, chatvideo, forum, herald and userfriends. 5. **Phase 20, Płytarium cutover.** 6. **After Phase 20:** the Horoskopia port comes first, then the Wavepath port. Neither is planned yet. This stretch is about preparing the shared plugins, not migrating apps, and a stabilization phase may come first. See the seeds for both ports. ## Related - `core-plugins-own-repos.md`: each shared plugin gets an `sm--plugin` repo - `../seeds/keios-port-themes-payments.md`: an earlier seed that also covers paymentgateway