procyon-core
Versioned runtime shared by applications created from the Procyon template.
Applications depend on this module instead of owning copies of the framework
infrastructure. Upgrade an application with:
go get github.com/bartek5186/procyon-core@latest
go mod tidy
go test ./...
The application keeps ownership of domain models, stores, services,
controllers, routes and migrations.
Runtime configuration is layered. config.Read loads the selected base JSON
file and then composes plugin defaults from a sibling
plugins.generated.json. Explicit plugins.<name> values in the base file
override generated defaults. Each plugin keeps ownership of its typed config
structure and decodes only its namespaced JSON value.
Typed application events
The public events package provides synchronous, typed communication
between the application and compile-time plugins. It intentionally has no
worker, queue or persistence. A durable publisher remains responsible for
retrying a failed Publish call.
Applications create one bus, pass it to every plugin through
plugins.Dependencies.Events, register application handlers, and call Seal
before routes or background tasks start. Plugin constructors may subscribe but
must not publish before the bus is sealed.
Topics are versioned contracts such as payment.purchase.completed.v1.
Handlers run sequentially, stop on the first error and must be idempotent.
See the event bus guide for contracts, lifecycle and
existing-project wiring.