laravilt/panel

A powerful admin panel framework for Laravel with Vue.js (Inertia.js) frontend. Build beautiful, reactive admin panels with minimal effort.

Fund package maintenance!
fadymondy

Installs: 105

Dependents: 2

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 2

pkg:composer/laravilt/panel

1.0.5 2025-12-15 06:26 UTC

README

Panel

Laravilt Panel

Latest Stable Version License Downloads

A powerful admin panel framework for Laravel with Vue.js (Inertia.js) frontend. Build beautiful, reactive admin panels with minimal effort.

Features

  • Resources: Auto-generate CRUD interfaces from database tables
  • Pages: Custom standalone pages with full control
  • Clusters: Group related pages under a common navigation section
  • API Generation: RESTful API endpoints with interactive API Tester
  • Forms: Dynamic form builder with 30+ field types
  • Tables: Feature-rich data tables with filtering, sorting, and bulk actions
  • Infolists: Display record details in elegant layouts
  • Actions: Customizable actions with modal support
  • Navigation: Auto-generated navigation with groups and badges

Installation

composer require laravilt/panel

The package will automatically register its service provider.

Configuration

Publish the config file:

php artisan vendor:publish --tag="laravilt-panel-config"

Quick Start

1. Create a Panel

php artisan laravilt:panel admin

This creates a new admin panel at app/Providers/Laravilt/AdminPanelProvider.php.

2. Create a Resource

php artisan laravilt:resource admin

Follow the interactive prompts to:

  • Select a database table
  • Choose which columns to include
  • Enable API endpoints (optional)
  • Enable API Tester interface (optional)

3. Create a Page

php artisan laravilt:page admin Dashboard

Creates a standalone page with both PHP controller and Vue component.

4. Create a Cluster

php artisan laravilt:cluster admin Settings --icon=Settings

Creates a cluster to group related pages:

// app/Laravilt/Admin/Clusters/Settings.php
class Settings extends Cluster
{
    protected static ?string $navigationIcon = 'Settings';
    protected static ?string $navigationLabel = 'Settings';
}

Assign pages to a cluster:

class ProfilePage extends Page
{
    protected static ?string $cluster = Settings::class;
}

API Generation

Resources can automatically generate RESTful API endpoints.

Enable API on a Resource

Simply define an api() method on your resource - the API will be auto-detected:

class ProductResource extends Resource
{
    public static function api(ApiResource $api): ApiResource
    {
        return ProductApi::configure($api);
    }
}

API Configuration Class

class ProductApi
{
    public static function configure(ApiResource $api): ApiResource
    {
        return $api
            ->columns([
                ApiColumn::make('id')->type('integer')->sortable(),
                ApiColumn::make('name')->searchable()->sortable(),
                ApiColumn::make('price')->type('decimal'),
                ApiColumn::make('created_at')->type('datetime'),
            ])
            ->useAPITester(); // Enable interactive API tester UI
    }
}

API Tester Interface

Enable the API Tester UI to allow interactive API testing directly from the panel:

$api->useAPITester(); // Enable
$api->useAPITester(false); // Disable (default)

Available API Methods

$api
    ->columns([...])           // Define API columns
    ->endpoint('/api/products') // Custom endpoint
    ->perPage(25)              // Items per page
    ->authenticated()          // Require authentication
    ->list(enabled: true)      // Enable/disable list operation
    ->show(enabled: true)      // Enable/disable show operation
    ->create(enabled: true)    // Enable/disable create operation
    ->update(enabled: true)    // Enable/disable update operation
    ->delete(enabled: true)    // Enable/disable delete operation
    ->useAPITester();          // Enable API Tester interface

Commands

Command Description
laravilt:panel {name} Create a new panel
laravilt:resource {panel} Create a resource with interactive prompts
laravilt:page {panel} {name} Create a standalone page
laravilt:cluster {panel} {name} Create a cluster for grouping pages
laravilt:relation {panel} {resource} {name} Create a relation manager

Cluster Command Options

php artisan laravilt:cluster admin Settings \
    --icon=Settings \
    --sort=10 \
    --group="System"

Resource Structure

app/Laravilt/Admin/Resources/Product/
├── ProductResource.php      # Main resource class
├── Form/
│   └── ProductForm.php      # Form configuration
├── Table/
│   └── ProductTable.php     # Table configuration
├── InfoList/
│   └── ProductInfoList.php  # Infolist configuration
├── Api/
│   └── ProductApi.php       # API configuration (optional)
└── Pages/
    ├── ListProduct.php      # List page
    ├── CreateProduct.php    # Create page
    ├── EditProduct.php      # Edit page
    └── ViewProduct.php      # View page

Testing

composer test

Code Style

composer format

Static Analysis

composer analyse

License

The MIT License (MIT). Please see License File for more information.