Skip to content

Arrel documentation ​

Arrel is an admin framework for Laravel: you define a Resource once, in PHP, and you get a complete panel (form, table, filters, actions, relation managers and, optionally, a place on the dashboard). The frontend is a Vue SPA that Arrel ships precompiled; there is nothing to write in JavaScript for a regular Resource.

php
final class PostResource extends Resource
{
    protected static string $model = Post::class;

    public function fields(): array
    {
        return [
            Section::make('Content')->schema([
                Text::make('title')->rules('required', 'string', 'max:255'),
                Toggle::make('is_published')->default(false),
            ]),
        ];
    }

    public function columns(): array
    {
        return [
            Column::make('title')->sortable()->searchable(),
            Column::make('is_published')->as('boolean')->sortable(),
        ];
    }
}

This class alone already gives you a full CRUD: a listing with sorting and search, a create/edit form with Laravel validation, and a /schema endpoint that the frontend renders dynamically. There is no second language to learn: the same methods you already know from Laravel (rules(), closures, Eloquent) are Arrel's API.

Where to start ​

  • Installation: requirements, composer require, publishing the assets.
  • Panel configuration: registering a Panel, the URL prefix, your own branding, theme and texts.
  • Resources: the core of Arrel, how a Resource is defined and how authorization works.

What you will find ​

The coreResources, fields, tables and columns, filters, actions and Relation managers.
Beyond CRUDPages, custom pages with the component kit, widgets and multi-tenancy.
Access and securityAuthentication (email verification, second factor, notifications) and security and authorization.
Keeping up to dateBehaviour changes and Releases.

The examples in this documentation ​

The examples start from a simple PostResource, the same one the Arrel test suite uses (workbench/app/Resources/PostResource.php). When an example needs a case that this Resource does not have, it uses generic names (Comment, Room...).

Requirements ​

PHP^8.5
Laravel^13.0