Filament Kanban

A fast, simple Kanban board for Filament v4 and v5. The browser owns the board, so a drop lands at once; the server checks every rule again and answers in the background. Free and open source (MIT).
- Repository: github.com/packstub/filament-kanban
- Packagist: packstub/filament-kanban
- Support: GitHub issues
What you get
| Feature | What it means for you |
|---|---|
| Instant moves | A drop moves the card at once and asks the server afterwards. If the server says no, the card slides back and the reason is shown. The board never re-renders on a move. |
| Rules on the server | Per-user columns, drop rules, read-only columns and WIP limits: the browser dims what you cannot do, and the server enforces the same rules. |
| Filament actions | Edit a card in a modal or slide-over, delete it, run your own actions from its menu, and create a card straight in a column. |
| Columns from an enum | One line turns a backed enum into columns, with labels and colours from HasLabel and HasColor. |
| Column summaries | A sum or an average under each column title, kept current after every move. |
| Built for big boards | Cards are drawn in the browser from JSON: hundreds of them stay light, with paging per column and instant search. |
Guides
| Guide | What it covers |
|---|---|
| Installation | Requirements, the first board page, and embedding a board in any Livewire component |
| Columns | Enum columns, who sees and moves what, drop rules, WIP limits, summaries, folding and order |
| Cards | What a card shows: eyebrow, title, amount, badges, meta, avatars, accent and link |
| Actions | Card actions, the click action, and creating a card in a column |
| Moves and events | What a move does, moveUsing(), reordering, the CardMoved event and browser events |
| Configuration | Search, filters, paging, polling, focus mode, styling, and the full fluent API |
At a glance
composer require packstub/filament-kanban
php artisan filament:assets
use Packstub\Kanban\Board;
use Packstub\Kanban\Card;
use Packstub\Kanban\Pages\KanbanResourcePage;
class DealBoard extends KanbanResourcePage
{
protected static string $resource = DealResource::class;
public function kanban(Board $board): Board
{
return $board
->query(fn () => Deal::query())
->columnAttribute('stage')
->columns(DealStage::class)
->card(fn (Deal $deal) => Card::make()->title($deal->company)->aside('$'.number_format($deal->amount)));
}
}
Requirements
PHP 8.3+, Laravel 12 or 13, Filament 4 or 5.
These pages are published at packstub.dev/docs/filament-kanban from the package's docs/ directory. Spotted a mistake? Open a pull request.