Everything you need to know about Project Planner. Can't find what you're looking for? Join our Discord community.
Project Planner is a Microsoft Planner-style project management plugin for Obsidian. It gives you Grid, Board, Timeline (Gantt), Dashboard, Dependency Graph, and My Tasks views — all stored directly in your vault with no external servers or subscriptions required.
Yes, Project Planner is completely free and open source. You can install it directly from the Obsidian Community Plugins directory.
Project Planner is currently desktop-only. It uses Node.js crypto APIs and canvas rendering that are not available in the Obsidian mobile app. Mobile support is on the roadmap.
Go to Settings → Projects and click 'Add project'. Give it a name and it will appear in the project selector at the top of every view. There is no limit on the number of projects.
As of v0.8.3, each project's tasks are stored in a dedicated JSON file inside your vault at {projectsBasePath}/{Project Name}/.planner-tasks.json. Because this file lives inside the vault (not in .obsidian/), it is fully Git-trackable and synced by Obsidian Sync. Plugin settings are stored separately in .obsidian/plugins/obsidian-project-planner/data.json.
Yes. Task data lives inside the vault in .planner-tasks.json files, so every task change produces a meaningful Git diff. This was a deliberate design decision in v0.8.3 — prior versions stored tasks in data.json inside .obsidian/, which is typically git-ignored.
Renaming a project only changes its display name. The folder on disk and the task file path use a stable storageKey set at project creation, so renaming never orphans your existing files.
Markdown Sync creates individual .md files for each task (stored at {projectsBasePath}/{Project}/Tasks/{Title}.md) with YAML frontmatter containing all task metadata. Changes in the plugin UI update the file automatically, and edits to the file are detected via Obsidian's metadata cache and synced back to the plugin.
Yes. Create a .md file inside the correct {projectsBasePath}/{Project Name}/Tasks/ folder with valid YAML frontmatter — at minimum: id (a UUID v4), title, status, and completed. The plugin detects the file via the metadata cache and imports it automatically.
Yes, but disable 'Sync on Startup' in Settings to avoid duplicate tasks across devices. The file watchers still detect changes in real time, so you get live sync without the startup scan race condition.
Yes. Because synced task files are standard Markdown with YAML frontmatter, they work with Dataview, Templater, and other plugins. Use Dataview to query tasks by status, priority, or due date across your entire vault.
My Tasks is a cross-project personal productivity hub that aggregates all tasks due today, this week, or this month — regardless of which project they belong to. It has Today, Week, and Month tabs, shared filters, and a New Task button that creates tasks due today.
Only tasks that have a due date set on the relevant date. Tasks without a due date never appear in My Tasks. Parent tasks whose children set a propagated date will also appear if their own due date matches — unless you use the 'Add Tasks' picker, which skips parent roll-up.
Go to Settings → My Tasks → Default view and choose your preferred starting tab.
Completion rate is the percentage of tasks with status 'Completed' out of all tasks in the project. Parent tasks with rolled-up values are included in the count.
Dashboard metrics update in real time via the TaskStore subscription — as soon as you complete, edit, or create a task in any view, the dashboard recalculates and re-renders automatically.
Most KPI cards on the dashboard are clickable. Clicking one opens a modal listing the exact tasks that contribute to that number, with inline checkboxes so you can complete tasks without leaving the dashboard.
Yes. Drag any column header left or right to reorder it. You can also show or hide columns using the Columns button in the header, and resize columns by dragging the right edge of a column header. All settings persist across sessions.
No — each task has a single parent. Use tags to create cross-references between related tasks across different parts of the hierarchy.
Yes, when Parent Roll-Up is enabled (Settings → Parent Task Roll-Up). Parent tasks automatically aggregate start/due dates (earliest/latest), effort (sum), cost (sum), and % complete (duration-weighted average) from their children. Rolled-up fields are shown as read-only in both Grid and Task Details views.
A bucket is a visual grouping column on the board (e.g., 'Sprint 1', 'Backlog', 'Review'). Status is a task property (e.g., 'In Progress', 'Blocked'). Moving a card between buckets changes its bucket assignment — not its status. You can update status independently via the card's context menu or Task Details.
No — Board View shows leaf tasks only (tasks that have no children). Parent tasks are visible in Grid and Timeline views. This matches the Microsoft Planner model where cards represent actionable work items.
Yes. Each project maintains its own bucket list. You can add, rename, recolour, reorder, and delete buckets from the bucket header menu. Changes are project-specific and persist across sessions.
In Timeline View, drag the body of a task bar to shift both dates together, or drag the left/right handle to change the start or due date independently. Changes are saved immediately.
Timeline View has three zoom levels: Day (each column = one day, best for short sprints), Week (each column = one week, good for iteration planning), and Month (each column = one month, ideal for roadmap overviews). Use the Day / Week / Month buttons in the toolbar.
Dependency arrows draw SVG connectors between linked task bars, colour-coded by type (FS/SS/FF/SF). When auto-scheduling is enabled, changing a predecessor task's dates automatically cascades to all dependent tasks, preserving each task's duration. Toggle arrows with the arrow button in the toolbar.
Finish-to-Start (FS): Task B can't start until Task A finishes — the most common type. Start-to-Start (SS): Task B can't start until Task A starts. Finish-to-Finish (FF): Task B can't finish until Task A finishes. Start-to-Finish (SF): Task B can't finish until Task A starts — rare, used for just-in-time scheduling.
The plugin's circular dependency guard detects cycles and prevents the cascade from entering an infinite loop. The graph will not break — dependent task dates simply won't update for circular chains.
The Dependency Graph is a read-only visualisation. To add or remove dependencies, open a task's details (right-click → Open details in any view) and use the Dependencies section in the Task Details Panel.
Each task can have an Estimated Cost and Actual Cost. Set a project-level budget, default hourly rate, and currency symbol in Settings → Cost Tracking. The Dashboard shows a Budget & Cost card with a progress bar and over-budget task count when a budget is configured.
Fixed: you enter the estimated and actual cost amounts directly. Hourly: cost is calculated automatically from effort hours × the hourly rate (per-task override or the project default). Parent task costs are rolled up as a sum from their children.
Join our Discord community or check out the full documentation.