Todoist Board

approved

by JD

A Todoist tasks board with sidebar and embedded views. Full 2-way sync. - This plugin has not been manually reviewed by Obsidian staff.

53 stars11,107 downloadsUpdated 1mo agoMIT

Todoist Board

Todoist Board is an Obsidian plugin that displays Todoist tasks as interactive boards in the sidebar or directly inside notes.

Features

  • Sidebar board for quickly reviewing and managing Todoist tasks.
  • Inline todoist-board code blocks for embedding filtered task lists in notes.
  • Todoist filter support, including project, priority, date, and custom filter queries.
  • Task actions for adding, editing, completing, deleting, scheduling, deferring, moving, and changing priority.
  • Parent and subtask display with collapse controls.
  • Sorting, compact mode, hidden tasks, manual order, polling refresh, and cached offline display.
  • Mobile support is enabled with isDesktopOnly: false.

Screenshots

Todoist Board sidebar view

Todoist Board inline task list

Todoist Board task controls

Todoist Board mobile layout

Setup

Todoist Board requires Obsidian 1.8.7 or newer. Obsidian 1.11.4 or newer is recommended for Secret Storage support.

  1. Install the plugin in Obsidian.
  2. Open Obsidian settings and go to Todoist Board.
  3. Paste a Todoist personal API token.
  4. Choose the filters you want available in the sidebar board.
  5. Open the command palette and run Open Todoist Board.

You can create a Todoist personal API token from Todoist account settings. Existing plugin-data tokens are migrated to Obsidian Secret Storage automatically when Secret Storage is available.

Inline Boards

Add a code block to any note:

```todoist-board
filter: today
```

Useful filter examples:

Filter queryResult
filter: todayTasks due today
filter: #ProjectNameTasks in a Todoist project
filter: p1Priority 1 tasks
filter: today & (p1 | p2)Tasks due today with priority 1 or 2
filter: created after: -7 daysTasks created in the last seven days
filter: view allAll active tasks
filter: due after: today & due before: in 8 daysUpcoming tasks for the next week

Todoist's filter syntax is documented in the Todoist help center.

Mobile Notes

Todoist Board avoids desktop-only Electron, Node, and filesystem APIs. Network requests use Obsidian's requestUrl API so the plugin can run on desktop and mobile. Mobile layouts are designed for touch use, including task sheets and long-press interactions.

Troubleshooting

  • If no tasks appear, confirm that the Todoist API token is present and valid.
  • If a filter looks empty, test the same query in Todoist and check project names, labels, dates, and priority syntax.
  • If Todoist is unavailable, the plugin may show cached tasks until the next successful sync.
  • If inline boards do not update, switch notes or run a manual sync from the sidebar board.
  • If mobile behavior feels off, update Obsidian and the plugin, then reload the vault.

Development

npm install
npm run typecheck
npm run lint:obsidian
npm test
npm run build
npm audit

Run all release checks with:

npm run verify

Disclosures

  • Requires a Todoist account and a Todoist personal API token.
  • Connects to the Todoist REST and Sync APIs to fetch, create, update, schedule, move, and complete tasks.
  • Stores the Todoist API token with Obsidian Secret Storage when available, falling back to plugin data storage on older Obsidian versions.
  • Stores non-secret plugin preferences locally with Obsidian's plugin data storage.
  • Caches task snapshots, project metadata, label metadata, hidden-task state, sort mode, compact mode, and manual order locally for responsiveness and offline display.
  • Does not collect analytics, use telemetry, or send data to any service other than Todoist.
  • Includes an optional funding link in the plugin settings and manifest.

This plugin is not affiliated with, endorsed by, or sponsored by Todoist.

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.