Installation
LaravelUi5 Core is the foundation layer for running SAP OpenUI5 frontends on a Laravel backend. It provides the artifact registry, UI5 + OData routing, CSRF handling, source strategies, and the php artisan ui5:* scaffolding commands.
Requirements
- PHP 8.4 or higher
- Laravel 13
- A free LaravelUi5 account from pragmatiqu.io (Core is distributed via the private Satis repository)
- LaravelUi5 OData (installed automatically as a dependency)
1. Configure the package registry
Core is distributed via the private registry at packages.pragmatiqu.io. Let Composer register it:
composer config repositories.pragmatiqu composer https://packages.pragmatiqu.ioUse the command rather than editing composer.json by hand. Composer writes the entry as a named block, and keeps that shape as you add repositories later — including the path repository that each scaffolded UI5 app needs:
"repositories": {
"pragmatiqu": {
"type": "composer",
"url": "https://packages.pragmatiqu.io"
}
}Composer accepts a second shape for this section, a plain list. Both are valid, but the section holds one value or the other, so mixing them is the one way to get this wrong: write the list form here, paste a named block later (or the reverse), and the second write replaces the first — taking the registry you installed Core from out of the file with it. You find out one command later, when Composer reports that it cannot find a matching version of laravelui5/core. Letting Composer write its own manifest keeps that from ever arising.
2. Authenticate
You'll need a Composer token. Reading the docs is free. Installing needs a free account: it gives you a named installation and its token for composer require. Create your free account →
Use Composer's HTTP-Basic credential store to bind your install token to the Satis host:
composer config --global http-basic.packages.pragmatiqu.io [email protected] YOUR-INSTALL-TOKENThe token is the password; the username is the email on your account. This is the command the portal hands you with both halves filled in, the moment you mint a token — copy it rather than retyping it.
--global writes ~/.composer/auth.json, so the credential belongs to your machine rather than to one checkout. Drop the flag and Composer writes an auth.json next to your composer.json instead — which works, and is worth knowing about only so you keep it out of version control. A repository is a property of the project; a credential is not.
3. Install Core
composer require laravelui5/core
composer require laravelui5/chiron --dev # optional: guidelines for your coding agentThe second line is optional and dev-only. laravelui5/chiron ships the guidelines and Agent Skills that Laravel Boost hands your coding agent, so it writes this stack instead of guessing at it. It takes one opt-in tick during php artisan boost:install — a scripted install takes nothing without it.
This pulls in laravelui5/odata automatically — no separate installation needed. The Ui5CoreServiceProvider is registered via Laravel's package auto-discovery, so no manual provider entry in bootstrap/providers.php is required.
4. Publish the configuration
php artisan vendor:publish --tag=ui5-configThis creates config/ui5.php, where you can customize the registry implementation, context factory, artifact resolvers, and the middleware stacks applied to the UI5 and OData route groups.
5. Verify the installation
php artisan route:list --path=ui5
php artisan route:list --path=odataYou should see the UI5 routes (under the ui5/ prefix) and the OData routes (under the odata/ prefix) registered with their middleware stacks. Both groups are wired automatically by the service provider. One middleware edit stays yours: replacing Laravel's CSRF middleware in bootstrap/app.php, see Quickstart. Without it, a UI5 write with a stale token answers 419 instead of the 403 and X-CSRF-Token: required that UI5 expects.
OData integration
OData v4 is provided by laravelui5/odata (MIT) and is fully integrated out of the box:
- Every UI5 application is an OData service:
AbstractUi5AppextendsLaravelUi5\OData\ODataService. - The OData route group is registered with Core's CSRF-token and authentication middleware — UI5's
X-CSRF-Tokenhandshake works without further configuration. - Manifests are enriched automatically:
manifest.jsonincludesdataSourcesfor any artifact implementingODataServiceInterface.
To define entity sets, function imports, or custom bindings, override configure(), registerBindings(), and bindFunctions() on your AbstractUi5App subclass.
What's next?
- Quickstart — Build your first UI5 module on Core
- The artisan commands:
ui5:assembleandui5:wireto scaffold a self-contained app and wire a data floorplan into it,ui5:appandui5:libto import existing UI5 source projects, plus the artifact generatorsui5:card,ui5:tile,ui5:chart,ui5:action,ui5:resource,ui5:report,ui5:dashboard,ui5:group— andui5:slotto inspect the slot catalog - For productivity features (database-backed registry, time-bound authorization, the shell with its navigation and command palette, server-side table export, prebuilt business modules) see the SDK installation guide