The external Solution lifecycle is planned, not product-complete in Core. The
boundaries below are enforced today; the installation and release tooling around
them is still being built. Treat this page as the contract you will be held to,
not as a finished walkthrough.
Boundaries
A Solution must not live underapp/Solutions inside Core. It is an external
package, resolved through Composer like any other dependency — see
Development setup for the two-lane workflow.
Its public contracts belong in fapost/foundation. Dependency-free primitives
belong in fapost/support. Neither package may reference App\…, and neither may
absorb business logic that belongs to Core.
Front-end components are possible, but only through the agreed build and publish
contract. A Solution cannot drop Vue files into a running application — the
builder front end is compiled ahead of time.
What a Solution typically contains
Most Solutions are a combination of pieces documented elsewhere in this section:Node handlers
So flows can act on your domain.
A data accessor
So conditions can read your data without duplicating it.
Builder configuration
So your nodes can be configured on the canvas.
Migrations
Subject to the same migration isolation rules as Core.