All pages

getting started

Quick start

A working board in two steps — create a page, describe the columns.

1. Create a Kanban page

bash
php artisan make:filament-page TasksKanban

2. Configure the board

The board assumes your records have a title and a description. Point it at other fields with titleField() and descriptionField().

Your page must extend KanbanPage and pass a model and a status field. Don't set a $view property — KanbanPage brings its own view.

php
<?php

namespace App\Filament\Pages;

use App\Models\Task;
use Asmit\AdvancedKanban\Columns\KanbanColumn;
use Asmit\AdvancedKanban\Kanban;
use Asmit\AdvancedKanban\Pages\KanbanPage;

class TasksKanban extends KanbanPage  // ← Must extend KanbanPage
{
    // Other properties like $navigationIcon, $navigationGroup, etc.

    public function kanban(Kanban $kanban): Kanban
    {
        return $kanban
            ->model(Task::class)           // ← Pass your model
            ->statusField('status')        // ← Pass the status field
            ->columns([
                KanbanColumn::make('todo')     // ← Pass required column
                    ->label('To Do'),
                KanbanColumn::make('in_progress')
                    ->label('In Progress'),
                KanbanColumn::make('completed')
                    ->label('Completed'),
            ])
            ->searchableFields(['title', 'description'])
            ->recordsPerColumn(10);
    }
}

3. That's it

The page appears in your Filament navigation and shows your tasks grouped by status.

Checklist:

  • Extend KanbanPage
  • Pass ->model(YourModel::class)
  • Pass ->statusField('your_status_field')
  • Leave $view unset

Add card positions

Cards keep whatever order your query returns until you give the board a sortable column. Add a decimal column and pass it to orderField() to drag cards into an exact slot:

php
->orderField('position')

See card reordering for the migration and the hooks.