Julien Tanay27 downloadsDisplay Tasks in a Kanban board view with columns for each status
A Kanban board view plugin for Obsidian that displays Tasks in a visual board layout.
[!NOTE] Why this and not another Kanban plugin? The key difference is what a card is:
Plugin Cards are… Built on Kanban notes — a board is its own note, each card a line of Markdown living only on that board self-contained board note Kanban Bases View notes — one card per note, columns from a frontmatter/Base property Obsidian Bases Tasks Kanban (this) tasks — cards are your real tasks, wherever they already live in your vault Tasks 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. Choose this if your work already lives as
- [ ]tasks scattered across your notes; choose a note-based board if you'd rather each card be a whole note.
/ and "In Review" A)main.js, manifest.json, and styles.css from the latest release.obsidian/plugins/tasks-kanban/ folderFrom the command palette:
Each board opens in its own tab; opening a board that's already open focuses its tab.
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.
A board's view is defined by a query (filters + sort + grouping) and its columns. In Settings you can:
Inline edits from a board's search/sort/group bars are saved back to that board.
The board supports a subset of Tasks query syntax. For complete documentation, see Query Syntax.
Filtering:
tag includes #<tag> — show tasks with the specified tagdescription includes <text> — show tasks whose description contains the textSorting:
sort by <field> / sort by <field> reversedue, scheduled, start, created, priorityGrouping (into foldable swimlanes):
group by <field> / group by <field> reversestatus, priority, tags, path, folder, filenameDate-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.
# Install dependencies
npm install
# Build for production (minified)
npm run build
Use the Obsidian CLI for faster development:
| Command | Action |
|---|---|
obsidian plugin:reload id=obsidian-tasks-kanban |
Reload plugin without restarting Obsidian |
obsidian dev:errors |
Check for plugin errors |
obsidian dev:console level=error |
View console errors |
obsidian dev:screenshot path=screenshot.png |
Capture current view |
obsidian dev:dom selector=".workspace-leaf" |
Inspect DOM elements |
obsidian dev:css selector=".workspace-leaf" prop=background-color |
Check CSS values |
obsidian dev:mobile on |
Enable mobile emulation |
obsidian eval code="app.plugins.getPlugin('obsidian-tasks-kanban')" |
Access plugin instance |
# 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
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
npm run typecheck # Type-check without emitting output
Husky hooks are installed automatically on
npm install (via the prepare script):
lint-staged (ESLint + Prettier on staged files) followed
by npm run typecheck.MIT