Packstub

Filament Kanban

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).

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.