alfasix / alfakit-kanban
Kanban boards for any Eloquent model in AlfaKit panels: drag and drop with keyboard and touch, WIP limits, transitions, swimlanes and authorised, tenant-scoped moves.
Requires
- php: ^8.4
- alfasix/alfakit: ^0.2|@dev
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
by Alfa Six
This is a read-only split of the AlfaKit monorepo. Please open issues and pull requests there.
Kanban boards for any Eloquent model in AlfaKit panels: a resource board page and a dashboard widget, with columns from an enum, a relationship or a closure, rich cards, drag and drop with mouse, touch and keyboard, WIP limits, transitions, swimlanes, search and filters. Every move is one authorised, validated and tenant-scoped request.
Installation
composer require alfasix/alfakit-kanban
The board ships with @alfakit/react, @alfakit/vue and @alfakit/svelte; nothing to install on the frontend.
Register
use AlfaSix\AlfakitKanban\KanbanPlugin; $panel->plugin(KanbanPlugin::make());
Usage
use AlfaSix\AlfakitKanban\Pages\KanbanPage; class TaskBoard extends KanbanPage { protected static string $resource = TaskResource::class; protected static ?string $statusEnum = TaskStatus::class; protected static ?string $orderAttribute = 'sort'; public function getFormSchema(): array { return [TextInput::make('title')->required()]; } } // TaskResource::getPages() 'board' => TaskBoard::route('/board'),
Cards move by dragging or with the keyboard (Space to pick up, arrows to move, Space to drop, Escape to cancel). The server checks the update policy, the target column, getTransitions(), strict WIP limits and the tenant on every move, and dispatches CardMoved afterwards.
See the documentation for every option.