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.
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.
- 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
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:
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
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
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.
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
Build a complete management system with Filament, from resources and forms to relation managers, global search, widgets and custom auth.
View Course