Filament
A full-stack Laravel framework for building admin panels, forms, tables, and dashboards fast.
Repository Health
Technical Analysis
Filament is an open-source Laravel framework built on Livewire and the TALL stack (Tailwind, Alpine.js, Laravel, Livewire) that provides a cohesive set of full-stack components — panels, forms, tables, infolists, notifications, and dashboard widgets — for building admin interfaces and internal tools without writing repetitive CRUD boilerplate. It has become one of the most widely adopted Laravel admin frameworks, with over 31,000 GitHub stars and 2.6M+ monthly composer installs.
The project is organized as a Symplify-managed monorepo published under the filamentphp GitHub organization, with each functional area (panels, forms, tables, actions, infolists, notifications, widgets, schemas) split into its own composer package and read-only mirror repo, while the filament/filament meta-package pulls them together into one cohesive installable framework. Filament’s panel builder generates a full admin resource (list, create, edit, view pages) from a single PHP class describing a model’s form and table schema, and its component APIs are reused consistently across contexts — the same form-field or table-column classes work in panels, in standalone Livewire components, or embedded in a custom Blade view.
What You Get
- A panel builder that scaffolds full admin resources (list/create/edit/view pages) from a single resource class per Eloquent model
- A standalone forms package with dozens of reactive, state-aware field components usable inside or outside a panel
- A tables package for filterable, sortable, bulk-actionable data tables with a fluent column/filter API
- Infolists for read-only structured record views, notifications for in-app toast/database alerts, and dashboard widgets for live metrics
- First-party plugins bridging Spatie packages (media library, settings, tags, Google Fonts) directly into Filament’s component system
Common Use Cases
- Standing up an internal admin panel for a Laravel application in hours instead of building custom CRUD screens by hand
- Building a client-facing dashboard with live widgets, filterable tables, and custom actions on top of existing Eloquent models
- Embedding Filament’s form or table components inside a standalone Livewire component, independent of the full panel builder
- Extending an app with third-party Filament plugins (media library integration, tagging, billing) that plug into the same resource/schema conventions
Under The Hood
Architecture — Filament is a Symplify monorepo-builder monorepo: the root filament/filament meta-package autoloads PSR-4 namespaces directly from packages/panels, packages/forms, packages/tables, packages/actions, packages/infolists, packages/notifications, packages/widgets, and packages/schemas, each independently versioned and split into its own read-only GitHub mirror (e.g. filamentphp/panels) via monorepo-builder.php. The panel builder is the orchestration layer: a Resource class declares a Schema (form/infolist field tree) and a Table definition once, and Filament’s Livewire components render, validate, and persist against it, reusing the same field/column primitives across panels, infolists, and standalone Livewire usage. Tech Stack — PHP 8.2+, Laravel 11+/12, Livewire v3 for reactive server-driven components, Alpine.js and Tailwind CSS on the frontend (TALL stack), with first-party integrations for Spatie’s media-library, settings, and tags packages, pest/pest-plugin-laravel for testing, and phpstan/larastan for static analysis. Code Quality — A large, actively maintained codebase (13M+ bytes of PHP across the monorepo) with a comprehensive Pest test suite covering panels/forms/tables in isolation, phpstan level analysis enforced in CI, Laravel Pint for style, and 1,589 contributors — reflecting both scale and sustained community investment. Recent 4.x/5.x work includes a rector-driven upgrade path (packages/upgrade) to automate migrations across major versions. API Design — The fluent builder API (TextInput::make('name')->required()->maxLength(255)) is consistent across every component family, so learning the form-field pattern transfers directly to table columns, infolist entries, and action modals, which is widely cited by users as Filament’s biggest ergonomic advantage over hand-rolled Blade admin UIs.