maherelgamil/rocketphp

Filament-style admin panel framework for Inertia.js + React.

Maintainers

Package info

github.com/maherelgamil/rocketphp

pkg:composer/maherelgamil/rocketphp

Fund package maintenance!

maherelgamil

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

dev-main 2026-04-21 00:06 UTC

This package is auto-updated.

Last update: 2026-04-21 00:14:53 UTC


README

A Server-Driven UI (SDUI) framework for Laravel + Inertia.js + React + shadcn/ui.

┌───────────┐    UI Schema (JSON)     ┌───────────┐
│  Laravel  │ ──────────────────────► │   React   │
│   (PHP)   │     "render this"       │  (client) │
└───────────┘                         └───────────┘

RocketPHP sends widget definitions, table schemas, form configurations, and page blocks from PHP. The React layer is stateless — it renders whatever it receives. One source of truth, no duplicated validation, no client-side API surface to design.

→ Read the docs

Requirements

  • PHP 8.2+
  • Laravel 11 / 12 / 13
  • Inertia.js v3 (inertiajs/inertia-laravel)
  • Tailwind CSS v4 in the host app
  • React 19 + @inertiajs/react
  • shadcn/ui components

Install

composer require maherelgamil/rocketphp

Then wire up Tailwind and Vite — see the Installation guide.

Quick look

php artisan rocket:make-panel Admin
php artisan rocket:make-resource User
use App\Models\User;
use MaherElGamil\Rocket\Resources\Resource;
use MaherElGamil\Rocket\Tables\Columns\TextColumn;
use MaherElGamil\Rocket\Tables\Table;

final class UserResource extends Resource
{
    protected static string $model = User::class;

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                TextColumn::make('id')->sortable(),
                TextColumn::make('name')->sortable(),
                TextColumn::make('email')->sortable()->copyable(),
            ])
            ->searchable(['name', 'email']);
    }
}

Visit /admin/users — you get a sortable, searchable, paginated table, policy-gated and ready to extend. Add a form() to unlock create/edit. Full walkthrough: Quick Start.

Features

  • Resources — auto-generated list, create, edit, view pages
  • Tables — columns, filters, row + bulk actions, pagination, search
  • Forms — 15 field types, layout grouping, server-side validation
  • Widgets — stats, charts, tables, recent records, activity feeds
  • Relation managers — manage related records inline on edit/view
  • Custom pages — drop a class in Pages/, it's auto-discovered
  • Authorization — policy-gated at every level (nav, page, action)
  • Global searchCmd+K across resources
  • Notifications — bell in the header, backed by Notification::send()
  • i18n + RTL — locale switcher, JSON translations, automatic RTL

Full reference in docs/.

Docs

Installation Requirements and wiring
Quick Start Your first panel + resource
Panel Configuration Every -> method, default, and behavior
Resources Model binding, pages, navigation
Tables Columns, filters, actions
Forms Field types, validation, layout
Widgets Dashboard + resource widgets
Authorization Policies and visibility
i18n & RTL Locale switcher, translations, logical layout
Configuration config/rocket.php reference and vendor:publish tags

Testing

git clone https://github.com/maherelgamil/rocketphp.git
cd rocketphp
composer install
./vendor/bin/pest

Contributing

PRs welcome — see the contributing guide.

License

MIT © Maher El Gamil