# Filament Kanban

![Filament Kanban](https://raw.githubusercontent.com/packstub/art/main/filament-kanban/banner.jpg)

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](https://github.com/packstub/filament-kanban)
- Packagist: [packstub/filament-kanban](https://packagist.org/packages/packstub/filament-kanban)
- Support: [GitHub issues](https://github.com/packstub/filament-kanban/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](https://packstub.dev/docs/filament-kanban/installation) | Requirements, the first board page, and embedding a board in any Livewire component |
| [Columns](https://packstub.dev/docs/filament-kanban/columns) | Enum columns, who sees and moves what, drop rules, WIP limits, summaries, folding and order |
| [Cards](https://packstub.dev/docs/filament-kanban/cards) | What a card shows: eyebrow, title, amount, badges, meta, avatars, accent and link |
| [Actions](https://packstub.dev/docs/filament-kanban/actions) | Card actions, the click action, and creating a card in a column |
| [Moves and events](https://packstub.dev/docs/filament-kanban/moves) | What a move does, `moveUsing()`, reordering, the `CardMoved` event and browser events |
| [Configuration](https://packstub.dev/docs/filament-kanban/configuration) | Search, filters, paging, polling, focus mode, styling, and the full fluent API |

## At a glance

```bash
composer require packstub/filament-kanban
php artisan filament:assets
```

```php
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](https://packstub.dev/docs/filament-kanban) from the package's `docs/` directory. Spotted a mistake? [Open a pull request](https://github.com/packstub/filament-kanban).
