docs: capture exploration — core plugin port inventory, Horoskopia and Wavepath seeds
This commit is contained in:
62
.planning/notes/core-plugin-port-inventory.md
Normal file
62
.planning/notes/core-plugin-port-inventory.md
Normal file
@@ -0,0 +1,62 @@
|
||||
---
|
||||
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-<name>-plugin` repo
|
||||
- `../seeds/keios-port-themes-payments.md`: an earlier seed that also covers paymentgateway
|
||||
Reference in New Issue
Block a user