Kanban · board
A task board on top of Sortable: drag cards between columns and columns by their grip, with work-in-progress limits, quick add, priority, due dates, checklists and assignees — and all of it by keyboard too.
Drag cards between columns · drag a column by its grip · “In progress” has a limit of 3 · Tab to a card, Space, then arrows (← → to change column)
Backlog
3Dark mode for the charts
Export the grid to Excel
Keep the column widths and number formats.
Onboarding tour
To do
2Rename in the tree view
Keyboard moves for kanban
In progress
2 / 3Sortable: auto-scroll at the edges
Tour spotlight follows scrolling
Done
2Side menu with drawer
File upload with progress
Moves show up here.
Usage
import { signal } from "./index.js";import { Kanban } from "./components/kanban.js"; const board = signal([ { id: "todo", title: "To do", items: signal([{ id: 1, title: "Design the header", priority: "high", tags: [{ label: "UX", tone: "primary" }], due: new Date(), assignee: { name: "Ada" } }]) }, { id: "doing", title: "In progress", limit: 3, tone: "#f59e0b", items: signal([]) }, { id: "done", title: "Done", items: signal([]) },]);Kanban({ columns: board, onMove: ({ card, from, to, toIndex }) => api.move(card.id, to, toIndex), onOpen: (card) => openDetails(card), onAdd: (column, title) => ({ id: crypto.randomUUID(), title }) }) // "+ Add a card"// card: (card, column) => Node draws your own cards; strictLimit refuses drops past a limit