Tasks Kanban

approved

by Julien Tanay

Display Tasks in a Kanban board view with columns for each status - This plugin has not been manually reviewed by Obsidian staff.

5 stars478 downloadsUpdated 15d agoMIT

Obsidian Tasks Kanban

A Kanban board view plugin for Obsidian that displays Tasks in a visual board layout.

How does this plugin compare to other Kanban ones? See Comparison.

Features

  • Kanban Board View: Display your tasks in a Kanban-style board with a column per status
  • Multiple Saved Boards: Define several named boards, each with its own query and columns; open each in its own tab
  • Base Query: A shared query merged into every board, so common filters live in one place
  • Custom Columns: Optionally replace the default status columns with your own, mapping each column to specific status symbols (e.g. split "In Progress" into "Ongoing" / and "In Review" A)
  • Grouping (Swimlanes): Group cards into foldable lanes by status, priority, tags, path, folder, or filename
  • Sorting: Sort cards by priority or a date field, ascending or descending
  • Filtering: Search bar for title and tags, plus full Tasks-style query editing
  • Drag & Drop: Move tasks between columns to change their status
  • Tasks Integration: Listens to Tasks plugin events for real-time updates
  • Click to Open: Click on any task card to open the source file

Installation

From the Community Plugins listing (recommended)

  1. Install the Tasks plugin from Obsidian Community Plugins
  2. Open Settings → Community plugins → Browse, search for Tasks Kanban, and click Install — or install directly from the Community listing page
  3. Enable both plugins in Obsidian Settings

Manual installation

  1. Download main.js, manifest.json, and styles.css from the latest release
  2. Copy them into your vault's .obsidian/plugins/tasks-kanban/ folder
  3. Reload Obsidian and enable both the Tasks and Tasks Kanban plugins in Settings

Usage

Opening a board

From the command palette:

  • Open board — opens the default board
  • Open saved query… — pick one of your saved boards to open
  • Open new blank board — create a fresh board and start customizing it

Each board opens in its own tab; opening a board that's already open focuses its tab.

Columns

By default the board shows one column per status type (Todo, In Progress, Done, Cancelled), derived from your Tasks status configuration.

You can instead define custom columns per board in Settings. Each custom column is a partition over status symbols — pick which statuses it collects, and the first one becomes the symbol written when you drop a card into it. This lets you, for example, split "In Progress" into separate "Ongoing" (/) and "In Review" (A) columns.

Saved boards and the base query

A board's view is defined by a query (filters + sort + grouping) and its columns. In Settings you can:

  • Edit the base query, merged on top of every board
  • Add, rename, and delete saved boards, each with its own query and columns

Inline edits from a board's search/sort/group bars are saved back to that board.

Filtering, sorting, and grouping

The board supports a subset of Tasks query syntax. For complete documentation, see Query Syntax.

Filtering:

  • tag includes #<tag> — show tasks with the specified tag
  • description includes <text> — show tasks whose description contains the text

Sorting:

  • sort by <field> / sort by <field> reverse
  • Fields: due, scheduled, start, created, priority

Grouping (into foldable swimlanes):

  • group by <field> / group by <field> reverse
  • Fields: status, priority, tags, path, folder, filename

Date-based grouping is intentionally not offered, since one lane per distinct date scatters the board.

The search and sort/group bars above the board edit the same query visually; the filter button opens the raw query editor.

Drag & Drop

  • Drag a task card from one column and drop it on another to change its status
  • The dropped card takes the target column's status symbol
  • The source file is updated and the board refreshes to show the new status

Comparison

The key difference between Kanban plugins is what a card is — and, when cards are tasks, where the task data comes from:

PluginCards are…Built on
Kanbannotes — a board is its own note, each card a line of Markdown living only on that boardself-contained board note
Kanban Bases Viewnotes — one card per note, columns from a frontmatter/Base propertyObsidian Bases
Task Boardtasks — checkbox lines scanned from across your vaultits own task scanner (reads Tasks-compatible formats, but parses independently)
Tasks Kanban (this)tasks — cards are your real tasks, wherever they already live in your vaultTasks

Because this plugin is built on Tasks, the board is a live view over your existing tasks (filtered, sorted, grouped) rather than a separate copy to keep in sync. Move a card and it rewrites the task's status in its source file. It reuses the Tasks plugin's own parser and query engine, so your tasks behave consistently between Tasks queries and the board.

Choose this if your work already lives as - [ ] tasks scattered across your notes and you already use Tasks; choose Task Board if you want a task board without depending on the Tasks plugin; choose a note-based board if you'd rather each card be a whole note.

Development

Building

# Install dependencies
npm install

# Build for production (minified)
npm run build

Development Commands (Obsidian CLI)

Use the Obsidian CLI for faster development:

CommandAction
obsidian plugin:reload id=obsidian-tasks-kanbanReload plugin without restarting Obsidian
obsidian dev:errorsCheck for plugin errors
obsidian dev:console level=errorView console errors
obsidian dev:screenshot path=screenshot.pngCapture current view
obsidian dev:dom selector=".workspace-leaf"Inspect DOM elements
obsidian dev:css selector=".workspace-leaf" prop=background-colorCheck CSS values
obsidian dev:mobile onEnable mobile emulation
obsidian eval code="app.plugins.getPlugin('obsidian-tasks-kanban')"Access plugin instance

Quick Development Cycle

# In one terminal: watch for changes
npm run dev

# In another terminal or Obsidian CLI: reload after changes
npm run dev:reload

# Or use the full cycle
npm run dev:full

Testing

Tests use Vitest with JSDom environment. Test files are in the tests/ directory.

npm test        # Run all tests once
npm run test:watch  # Watch mode for development

Type Checking

npm run typecheck   # Type-check without emitting output

Git Hooks

Husky hooks are installed automatically on npm install (via the prepare script):

  • pre-commit: runs lint-staged (ESLint + Prettier on staged files) followed by npm run typecheck.
  • commit-msg: validates the message with commitlint against the Conventional Commits spec.

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.