Skip to content
BSL 1.1 · Production use included

The metadata engine
that makes Laravel self-describing.

Define your application's structure as POPOs (Poor Old PHP Objects) with a handful of PHP attributes. Core reflects, registers, and serves it. Routes, manifests, OData services, launchpad tiles, slot-bound parameters. Your code becomes the source of truth.

Past 1.0 on strict SemVer. Runs standalone — the SDK is an upsell, not a prerequisite.

Why Core

Structure doesn't emerge. You have to describe it.

Routes multiply. Nobody knows all of them.

Every new artifact is wired by hand. A route here, a manifest entry there, a provider registration somewhere else.

The UI5 source project and the Laravel app drift apart. Manifests go stale and nothing notices.

There's no single place that answers: "What does this system actually consist of?"

The codebase knows everything. But it can't describe itself.

Core changes that.

Capabilities

Declare once. The system does the rest.

Metadata Engine

Your artifacts are plain PHP objects implementing Core's contracts, with attributes carrying the declarative overlay. Core reflects over them, validates consistency, and builds a deterministic registry. No YAML. No hand-written manifests.

Artifact Registry

Modules, apps, libraries, resources, cards, reports, tiles, charts, dashboards, actions. Every building block is a registered artifact with a globally unique namespace. Discoverable, queryable, composable.

Automatic Wiring

Routes generate from artifact declarations. Manifests are assembled server-side, so the UI5 app never drifts from the Laravel app. You describe; Core wires.

OData v4, Built In

Every application is an OData v4 service. $metadata, the read surface, and the CSRF-token handshake come with the app. Declare entity sets in PHP and the service exposes them. Writes go through Ui5Actions.

Composable Dashboards

A dashboard aggregates groups; a group names the tiles, cards and charts it renders. The composition is declared in PHP and served as a JSON control tree — and groups can be contributed across module boundaries.

Reports as Documents

A report is a Blade template that receives an array and emits HTML. It owns its layout, its CSS, its print rules. No selection screen to build, no column metadata to declare, no export pipeline to configure.

The Slot Pipeline

Artifacts declare the parameters they need with #[Slot]. Core resolves each one through a fixed chain — request, composition, setting, default — so the same report or chart works embedded, standalone, or driven by a filter bar.

A Client Facade

LaravelUi5.call invokes actions and seals Laravel validation errors back onto the form model. dispatchIntent opens artifacts by namespace. exportTable renders server-side. The JS ships with Core.

Independent of SDK

Core runs standalone, past 1.0 and under strict SemVer, so you can pin to it. Use Core to structure your application, then decide later whether the SDK's runtime — identity, tenancy, RBAC, the shell — adds value.

Building Blocks

One registry. Every building block in it.

Module

Top-level feature container

Application

User-facing application within a module

Library

Shared UI5 library

Card

Integration card for overviews

Report

Server-rendered HTML document, parameterised by slots

Tile

Single-value tile with status or navigation

Chart

Server-computed visualization in a dashboard group

Dashboard

Composition root, served as a UI5 control tree

Dashboard Group

Composes tiles, cards and charts into a section

Action

Backend operation bound to entity or module

Resource

Read-only structured data endpoint

Dialog SDK-bound

Global invokable view/controller pair

Value Help SDK-bound

Provider-owned search help, opened by namespace

Philosophy

Description, not configuration

Most frameworks ask you to configure behavior. Core asks you to describe structure.

The difference is fundamental:

  • Configuration is imperative. You tell the system what to do. It forgets as soon as the config changes.
  • Description is declarative. You tell the system what exists. It derives behavior from structure.

Core's metadata engine makes your code the source of truth. Routes, manifests, OData services, dashboard compositions. They're all consequences of what you've described, not things you've wired by hand.

Traditional Laravel

  • routes.php
  • config files
  • service providers
  • manual wiring
  • scattered structure

With Core

  • POPOs
  • #[Slot]
  • #[Setting]
  • #[Parameter]
  • → registry
  • → routes, manifests, OData
Free Account

Reading needs nothing. Installing needs a token.

The docs, the API reference and the video course are open to everyone. A free account gives you what composer require laravelui5/core asks for: a named installation, its Composer token for production, staging and development — plus the invite to the monthly office hour. Production use is included. No credit card. No trial period.