Download the PHP package packstub/filament-kanban without Composer
On this page you can find all versions of the php package packstub/filament-kanban. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download packstub/filament-kanban
More information about packstub/filament-kanban
Files in packstub/filament-kanban
Package filament-kanban
Short Description A fast, simple Kanban board for Filament: optimistic drag and drop, per-user columns and drop rules, a focus mode without the sidebar, and cards shaped in one closure.
License MIT
Homepage https://github.com/packstub/filament-kanban
Informations about the package filament-kanban
Filament Kanban
A fast, simple Kanban board for Filament: a drop lands at once, the server checks every rule, and your Filament actions work on every card.
Features
- Instant drag and drop: a drop lands at once; if the server refuses, the card slides back with the reason.
- Rules on the server: columns from an enum, per-user columns, drop rules, read-only columns and WIP limits.
- create in a column.
- Column summaries: a sum or an average under each column title, kept current after every move.
- Light on big boards: cards are drawn in the browser from JSON, so hundreds of them stay fast.
- Search, filters and paging: instant search, select filters and infinite scroll per column.
- Events: a
CardMovedevent, browser events and polling for shared boards. - Dark mode and translations: English, Romanian, Russian and German included.
Compatibility
| Plugin | Filament | Laravel | PHP |
|---|---|---|---|
| 0.x | 4.x, 5.x | 12.x, 13.x | 8.3+ |
Installation
No config, no migrations. The board uses the SortableJS that Filament already ships and plain CSS on your panel's palette, so there is nothing to add to your theme.
Add a board page next to a resource (or a standalone KanbanPage) and describe the board in one method:
Register it in the resource's getPages(): 'board' => DealBoard::route('/board').
Read more: Installation, including a board inside any Livewire component.
Instant moves

A drop moves the card in the browser at once and asks the server with a small renderless call. The server loads the record through the board's query() and checks the column rules; your move logic runs; the card flashes when it is saved, or slides back with the reason when it is refused. Give your own logic to moveUsing() and throw to refuse:
Scope the query (tenant, team, date window) and every read, move and action goes through it.
Read more: Moves and events.
Columns and rules

Build the columns from an enum, or list them. Every rule takes a closure and is evaluated once per request, never per card:
| Method | What it does |
|---|---|
visible() / hidden() |
Leave the column out for this user: its cards are not loaded and nothing moves into or out of it. |
accepts([...]) |
The columns a card may come from. null (default) means anywhere. |
droppable(), draggable(), readOnly() |
Who may drop in and drag out. |
limit() |
A WIP limit: 3/5 in the header, and a full column refuses moves and new cards. |
creatable() |
Whether the column offers "+" for the create action. |
collapsed(), sortBy() |
Start folded; this column's order. |
Read more: Columns.
Card actions

Your Filament actions work on cards, with their forms, modals, slide-overs and confirmations. The card's record is the action's record, loaded through the board's query, and the board refreshes once an action has run. cardAction() picks the one a click on the card runs:

Read more: Actions.
Create in a column

createAction() puts a "+" in each droppable column's header. The form opens, and the new record gets that column:
Hidden, read-only, full and creatable(false) columns get no "+", and the server refuses a create into them.
Read more: Actions.
Summaries and limits
A line under each column title, from the column's query with the current search and filters, refreshed after every move:
Read more: Columns.
Cards
Card::make() with eyebrow() (small monospaced line), title(), aside() (right-aligned: an amount, a date), badge($label, $color, $condition), meta([...]) (empty parts dropped), avatar($url, $name) (initials without a picture), accent($color) (a coloured left edge), url(), searchText() and actions([...]).
Read more: Cards.
Search, filters and paging

Typing filters the loaded cards at once, then the server brings the matching cards of every column. Each column loads its cards in pages as you scroll.
Read more: Configuration.
Configuration

The stylesheet is plain CSS on Filament's colour variables and follows dark mode. Restyle it with the --pk-* variables on .pk (--pk-ring, --pk-col-width, --pk-card-bg, --pk-radius, …) from your theme, prefixed so they win over the plugin's stylesheet (.fi-body .pk { … }).
Read more: Configuration, the full fluent API.
Documentation
The same pages live in the docs/ directory of this repository.
Testing
Changelog
See the changelog.
Security vulnerabilities
Please e-mail [email protected] rather than opening a public issue.
Credits
License
MIT. See the license file.
All versions of filament-kanban with dependencies
filament/filament Version ^4.0 || ^5.0
illuminate/contracts Version ^12.0 || ^13.0
spatie/laravel-package-tools Version ^1.92