Architecture Overview
The SDK is one Composer package, laravelui5/sdk, built on Core. Its PHP namespace LaravelUi5\Sdk\ spans 24 domains, grouped into seven pillars. The package also ships three apps: the Launchpad, Partners and Settings.
The seven pillars
| Pillar | Domains | Stability |
|---|---|---|
| Identity, security & platform | Security · Platform · Partners | Stable |
| Runtime & data | Sync · OData scoping and the #[Read] gate · Settings · Parameters (per-actor values) | Stable |
| Interaction & dispatch | Action · Intent · Impersonation · Http | Stable |
| Shell & UI composition | Shell (the LeanShell) · Weave · the Ui5 bases for dialogs and value helps · Launchpad | Stable |
| Integration points | Login · Tenancy · Address · Export · Customizing | Stable |
| Content & tooling | Help · Commands | Stable |
| Testing | the scenario DSL | Open by design |
The 24th domain, Scaffolding — the generator behind Core's ui5:action when the SDK is installed — is internal and not part of the contract.
Stable means soft-freeze: validated in our own production applications, with every change additive and announced. Open by design means public, but deliberately reserved to evolve.
Integration points: bring your own provider
Each seam is a contract you bind; the SDK never forces a third-party dependency on you.
| Seam | Contract | What ships |
|---|---|---|
| Login | LoginProviderInterface | an Eloquent provider on your users table |
| Tenancy | TenantResolverInterface | a neutral placeholder operator for single-tenant installations |
| Address | AddressProviderInterface | nothing — you bind the validator you license |
| Export | ExportWriterInterface | CSV built in; xlsx and other formats are pluggable |
| Customizing | code-owned catalogs | synced by ui5:sync like every other declaration |
Dependency direction
The SDK depends on Core, never the reverse. Every SDK service sits behind an interface bound in the SDK's service provider, so a host can replace it through the container.
Code declares, the database decides
Core's Ui5Registry knows what exists; the SDK's SdkRegistry extends it with the SDK's metadata — roles, abilities, concepts, value helps. ui5:sync projects that into the sdk_* catalog, and runtime authorization reads the database. See Sync Pipeline and The Core Seam.