PHP-first interfaces for Laravel and Inertia.

Build the interface from PHP. Keep the frontend cohesive.

Inlay turns Laravel contracts into polished administration screens with the same behavior in React and Vue.

Laravel 12+Inertia v3React + Vue

from schema to screen

Choose a surface. Keep the contract.

Start with one PHP vocabulary, then switch between the screens your application needs.

Form schema

Validated inputs, ready for a real screen.

Describe fields once, then carry rules, messages, and accessibility into React or Vue.

Explore forms
Form.phpinlay.forms.v1
TextInput::make('email')
    ->email()
    ->required();
01
Server-owned rules
02
Versioned Inertia props
03
React and Vue renderers
04
Packages that compose

// under the hood

One contract. Every surface in sync.

Keep authorization, validation, querying, and persistence in Laravel. Inlay carries the intent across Inertia, so your frontend stays focused on rendering a great experience.

A resource stays readable
final class UserResource extends Resource
{
    public static function form(Form $form): Form
    {
        return $form->schema([
            TextInput::make('name')->required(),
            Select::make('role')->options($roles),
        ]);
    }
}
01 Describe
Define the screen in PHP, close to your model and policy.
02 Transport
Serialize a stable, typed contract through Inertia v3.
03 Render
Let React or Vue provide the accessible browser controls.

// built to grow with you

Everything you need to ship a panel.

Start with a Form or Table. Add Resources, themes, actions, widgets, and plugins when the application earns them.

01PHP-first contracts
Define forms, tables, Resources, and panels in the language your Laravel application already owns.
Explore php-first contracts
02One shared payload
Inertia carries a versioned contract to React or Vue, keeping behavior and presentation aligned.
Explore one shared payload
03Ready for real CRUD
Search, filters, validation, actions, widgets, policies, and account settings grow with your application.
Explore ready for real crud
04Open extension points
Themes, plugins, fields, columns, renderers, and community packages fit the same public seams.
Explore open extension points

// get started

From a clean Laravel app to your first screen.

Install the foundation, scaffold a panel, then let your resource classes describe the work your team does every day.

FrontendReact is the defaultPrefer Vue? Use --renderer=vue.See renderer options

The first three commands ready to run
  1. 01

    Install the foundation

    Add the panel runtime and renderer contracts.

    composer require inlayphp/inlay:"^0.3"
  2. 02

    Scaffold your panel

    Generate the provider, auth pages, and User Resource.

    php artisan inlay:install --panels
  3. 03

    Describe the first resource

    Shape its Forms, Tables, validation, and actions in PHP.

    php artisan make:inlay-resource Post --generate
React renderer includedVue preset available

// make the next screen yours

Start with a clean Laravel application.

Install Inlay, register a panel, and let PHP describe the interface your users need.

Quick navigation

Search the docs

to move Enter to open Esc to close