Skip to content

What is Arqel?

Arqel is an MIT-licensed open-source framework for building admin panels in Laravel 12+/13 with Inertia 3 and React 19.2+. It positions itself as an alternative to Filament and Laravel Nova.

Philosophy

Three opinionated choices form the heart of the project:

1. Server-driven UI

Resources, Fields, Tables, and Forms are declared in PHP. The React front-end only consumes the JSON serialized by the server. You describe what the admin is, not how the components are assembled:

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

    public function fields(): array
    {
        return [
            Field::text('title')->required(),
            Field::slug('slug')->fromField('title'),
            Field::textarea('body'),
        ];
    }
}

That single file generates index, create, edit, show, routes, validation rules, and Inertia payload.

2. Inertia-only

Arqel forbids TanStack Query, SWR, or other fetch libraries in Resource CRUD (ADR-001). Inertia props are the default state. The result: zero impedance mismatch between Laravel and React, natural SSR navigation, and a single mental model — "props come from the server, callbacks go back to the server".

3. Laravel-native

Policies, Gates, FormRequest, Eloquent — used directly. Arqel has no Role model, no permission table, no parallel ACL. If you know Laravel, you know Arqel.

Stack

LayerTechnology
BackendPHP 8.3+ · Laravel 12+
BridgeInertia 3
FrontendReact 19.2+ · TypeScript 5.6+ strict
UIshadcn CLI v4 (new-york) · Radix UI · Tailwind CSS v4
TablesTanStack Table v8
BundlerVite 5 (app) · tsup (libs)
TestsPest 3 · Vitest · Playwright

Packages

One-line installation

bash
composer require arqel-dev/framework

The arqel-dev/framework meta-package pulls the entire PHP stack. If you want to know what's underneath:

PHP

PackageResponsibility
arqel-dev/frameworkMeta-package — bundles everything below
arqel-dev/corePanels, Resources, polymorphic routes, Inertia bridge, command palette, telemetry
arqel-dev/authLogin/Register/Forgot/Reset/Verify bundled (Inertia React pages) + AbilityRegistry
arqel-dev/fields21 field types + ValidationBridge
arqel-dev/tableTable builder + Columns + Filters
arqel-dev/formForm builder + Layout components + FormRequest gen
arqel-dev/actionsRowAction, BulkAction, ToolbarAction, HeaderAction
arqel-dev/navNavigationItem, NavigationGroup, BreadcrumbsBuilder

JavaScript

The JS packages are installed automatically by arqel:install:

PackageResponsibility
@arqel-dev/typesShared TypeScript types (zero runtime)
@arqel-dev/reactcreateArqelApp, <ArqelProvider>, <ThemeProvider>, contexts
@arqel-dev/hooksuseResource, useArqelForm, useTable, useNavigation, useFlash, useCanAccess
@arqel-dev/uiAppShell + Sidebar (shadcn sidebar-07) + DataTable + FormRenderer + 16 shadcn primitives
@arqel-dev/authLoginPage / RegisterPage / ForgotPasswordPage / ResetPasswordPage / VerifyEmailNoticePage (split-screen login-04)
@arqel-dev/fields21 rich inputs registered via FieldRegistry
@arqel-dev/themeSemantic tokens + dark-mode + ThemeToggle (FOUC-safe)

Comparison with Filament and Nova

CriteriaFilamentNovaArqel
BridgeLivewireVue/InertiaInertia + React
Frontend stackAlpine + TailwindVue 3React 19 + shadcn (Radix) + Tailwind v4
LicenseMITCommercialMIT
Client validationpartialpartialZod via ValidationBridge
TypeScriptpartialstrict + exactOptionalPropertyTypes
Field count30+25+21 covering canonical cases

Non-goals

Arqel will not ship:

  • Visual form builder (drag-drop) — declarative-only
  • Full multi-tenancy in Phase 1 — only scaffold
  • Real-time collab — Phase 4 considers Laravel Reverb
  • Custom ORM — Eloquent only

Next steps

MIT License — built with Inertia + React + Laravel.