Admin Panels

Building an Admin Panel in Minutes with Filament PHP

How Filament turns your Eloquent models into a full admin panel with forms, tables, filters and actions, and when it is the right choice.

Building an Admin Panel in Minutes with Filament PHP

Almost every business application needs an admin panel: a place to add records, search them, edit them and see a few numbers on a dashboard. Building that by hand takes weeks.

Filament is a Laravel package that gives you all of this from simple PHP classes. You describe your forms and tables, and Filament builds a clean, responsive interface around them.

In short
  • A Filament resource connects one Eloquent model to list, create and edit pages.
  • Forms and tables are written in PHP, not HTML.
  • Relation managers, global search and widgets cover most real admin needs.

What Filament gives you

  • Ready-made pages to list, create, view and edit records.
  • Form fields with validation, layouts, tabs and wizards.
  • Tables with search, sorting, filters and bulk actions.
  • Dashboards with stats, charts and table widgets.
  • Authentication, notifications and dark mode out of the box.

Getting started

Terminal
composer require filament/filament
php artisan filament:install --panels
php artisan make:filament-user

Visit /admin, log in, and you already have a working panel. Now add your first resource:

Terminal
php artisan make:filament-resource Book --generate

The --generate flag reads your database columns and creates a starting form and table for you.

Describing a form

PHP · app/Filament/Resources/BookResource.php
public static function form(Form $form): Form
{
    return $form->schema([
        TextInput::make('title')->required()->maxLength(255),
        Select::make('category_id')
            ->relationship('category', 'name')
            ->searchable()
            ->required(),
        DatePicker::make('published_at'),
        Toggle::make('is_available')->default(true),
    ]);
}

Each line is one field. Validation, relationships and default values sit right next to the field they belong to, which makes forms easy to read and change.

Describing a table

PHP · Same resource
public static function table(Table $table): Table
{
    return $table
        ->columns([
            TextColumn::make('title')->searchable()->sortable(),
            TextColumn::make('category.name')->badge(),
            IconColumn::make('is_available')->boolean(),
        ])
        ->filters([
            SelectFilter::make('category')->relationship('category', 'name'),
        ])
        ->actions([EditAction::make(), DeleteAction::make()]);
}

Going beyond simple CRUD

Feature What it solves
Relation managers Manage a book's loans or reviews from inside the book's page
Custom actions Buttons with modals, such as "Mark as returned"
Global search Find any record from the top bar
Widgets Show totals, charts and recent records on the dashboard
Multiple panels Separate panels for admins and staff

When is Filament a good fit?

Filament shines for internal tools, back offices and SaaS admin areas, where speed of delivery matters more than a pixel-perfect custom design.

If your public website needs a completely custom look, you can still use Filament for the admin side only. The two live happily in the same Laravel app.

Summary

Filament lets you describe an admin panel in PHP and get a polished interface in return. Start with a resource per model, shape your forms and tables, then add relation managers, actions and widgets as the project grows.

Filament PHP Mastery: Build Modern Admin Panels Quickly course thumbnail
Go deeper

Filament PHP Mastery: Build Modern Admin Panels Quickly

Build a complete management system with Filament, from resources and forms to relation managers, global search, widgets and custom auth.

View Course
Read next

Other articles