Skip to main content

๐Ÿ“ Lesson 7.1: Task & Project Management in Obsidian

Your notes already know what you're thinking about โ€” so why keep your to-dos in a separate app? In this lesson we turn your vault into a genuine task manager, where a task lives right next to the note that spawned it, yet still rolls up into a single dashboard of everything due this week. No context-switching, no lost follow-ups.

๐Ÿ“š What You'll Learn

By the end of this lesson, you will be able to:

  • Write native Markdown checkboxes and understand exactly how Obsidian renders and toggles them
  • Use the Tasks community plugin โ€” emoji metadata for due, scheduled, start, priority, recurrence, and done dates
  • Write tasks query blocks that gather matching tasks from across your whole vault, sorted and grouped
  • Combine tasks with Dataview TASK queries, aggregate tasks inside project notes, and sketch a simple GTD setup

โฑ๏ธ Estimated Time: 60 minutes

๐ŸŽฏ Project: Build a "Task Dashboard" note that lists every open task in your vault due this week โ€” a single place to start each morning.

In This Lesson

Tasks Where Your Thinking Lives

Most people keep to-dos in one app and knowledge in another. It feels tidy, but it quietly costs you. The task "email Dr. Chen about the grant" has no idea it belongs to your Grant Application note. The task "test the login bug fix" is divorced from your Auth Refactor project. Every time you want context you jump apps, lose your place, and the two systems drift out of sync.

Obsidian's pitch is simple and powerful: write the task exactly where the thought happened โ€” in your meeting note, your project note, your daily note โ€” and let the software gather it back up for you. The checkbox stays anchored to its context forever, but you still get a single, always-current list of what's due. Think of it as the difference between a shoebox of loose receipts and a ledger that reads every receipt automatically.

๐Ÿง  Mindset

You may be tempted to migrate a huge existing to-do list into Obsidian in one sitting. Don't. The win here isn't "another place to hold 200 tasks" โ€” it's that new tasks are born attached to the work you're already doing. Start by capturing tasks as they come up in this week's notes. In a fortnight you'll have a living system, built from real work, with no migration marathon and no guilt-inducing backlog import.

Native Markdown Checkboxes

Before any plugins, Obsidian speaks checkboxes out of the box. A checkbox is just a list item whose bullet is followed by square brackets:

- [ ] Book the dentist
- [x] Pay the electricity bill
- [ ] Draft the project brief
    - [ ] Outline goals
    - [x] Gather last year's numbers

Here's what each part does:

  • - starts a normal Markdown list item (a * or + works too).
  • [ ] โ€” a space between the brackets โ€” renders as an empty checkbox.
  • [x] โ€” an x between the brackets โ€” renders as a checked box, usually with the text struck through.
  • Indent with a tab or spaces to make subtasks, exactly like a nested list.

In Reading view (and in Live Preview) those brackets become real, clickable boxes. Click one and Obsidian edits the underlying text for you โ€” it literally changes [ ] to [x] in the file. That's the whole trick: the checkbox is plain text, and the tick is just a character. Your tasks are as portable and future-proof as every other note in your vault.

โœ… Pro Tip โ€” Alternate checkbox states

Obsidian and many themes recognise custom statuses beyond blank and x. Common ones are [/] (in progress), [-] (cancelled), [?] (question), and [!] (important). Rendering depends on your theme, but the text stays valid Markdown everywhere. The Tasks plugin (next section) lets you define exactly what each symbol means and how it behaves.

โš ๏ธ Important Note: A checkbox needs the space inside the brackets to be empty: - [ ], not -[ ] or - []. If your boxes aren't rendering, 95% of the time it's a missing space after the dash or missing space inside the brackets.

The Tasks Plugin & Its Emoji Metadata

Native checkboxes are great for a single note. But you can't ask them questions like "show me everything due before Friday." That's what the Tasks community plugin adds. Install it from Settings โ†’ Community plugins โ†’ Browse โ†’ "Tasks", then enable it.

Tasks works by letting you decorate an ordinary checkbox with emoji metadata. Each emoji is a signpost that says "the thing after me is a date / a priority / a recurrence rule." You never have to memorise them cold โ€” the plugin ships a "Create or edit task" command (open the Command palette with Ctrl/Cmd+P) that gives you a friendly form and writes the emoji for you. But it helps to read them:

Meaning Emoji Example
Due date ๐Ÿ“… ๐Ÿ“… 2026-09-18
Scheduled (plan to work on) โณ โณ 2026-09-16
Start (don't act before) ๐Ÿ›ซ ๐Ÿ›ซ 2026-09-15
Priority ๐Ÿ”บ highest ยท โซ high ยท ๐Ÿ”ผ medium ยท ๐Ÿ”ฝ low ยท โฌ lowest ๐Ÿ”ผ
Recurrence ๐Ÿ” ๐Ÿ” every week
Done date (added when you tick it) โœ… โœ… 2026-09-14

Put together, a fully specified task looks like this โ€” still just one line of Markdown:

- [ ] Submit quarterly report ๐Ÿ”ผ ๐Ÿ›ซ 2026-09-15 โณ 2026-09-16 ๐Ÿ“… 2026-09-18 ๐Ÿ” every 3 months

Read it left to right: a medium-priority task you shouldn't start before the 15th, plan to work on the 16th, that's due the 18th, and recurs quarterly. When you tick a recurring task, Tasks marks this one done (stamping โœ… with today's date) and automatically writes the next occurrence right above it with the dates rolled forward. That alone is worth the install.

๐Ÿ“– Definition

Global filter: In the Tasks settings you can set a "global filter" โ€” usually a tag like #task. When set, Tasks only treats a checkbox as a real task if it contains that tag. This lets you keep casual checklists (packing lists, recipe steps) separate from tracked tasks. Leave it blank and every checkbox in your vault becomes a task. There's no wrong answer โ€” just decide early, because changing it later reclassifies everything at once.

Now the payoff. A task's life moves through a small set of states, and the Tasks metadata is what lets your queries know where each one sits:

graph LR A["๐Ÿ’ก Captured
- [ ] in a note"] --> B["๐Ÿ›ซ Not started
start date in future"] B --> C["โณ Scheduled
you plan to do it"] C --> D["๐Ÿ“… Due
deadline approaching"] D --> E["โœ… Done
ticked, done-date stamped"] E -->|"๐Ÿ” recurring"| A D -->|"missed"| F["๐Ÿ”ด Overdue"] F --> E

Querying Tasks Across Your Vault

Here's where it stops being a checklist and becomes a system. Anywhere in any note you can drop a tasks query block โ€” a fenced code block whose language is tasks. Each line inside is a filter, sort, or grouping instruction written in near-plain English. Tasks scans your entire vault, finds every checkbox that matches, and renders a live, clickable list right there in the note.

Example 1 โ€” everything still open, due on or before today, most urgent first:

```tasks
not done
due before tomorrow
sort by priority
sort by due
```

Example 2 โ€” this note as a mini project view: open tasks that live in this same file, grouped by their due date:

```tasks
not done
path includes {{query.file.path}}
group by due
sort by due
```

Example 3 โ€” a "waiting / high priority" board: open, high-or-higher priority tasks tagged #task, hiding the little metadata icons for a cleaner look:

```tasks
not done
priority is above medium
tags include #task
hide priority
hide task count
```

The filter vocabulary is large but learnable. A few of the most useful lines:

  • not done / done โ€” completion state.
  • due before tomorrow, due after 2026-09-01, due this week, no due date โ€” date filters (also scheduled, starts, happens).
  • path includes Projects/ โ€” only tasks in files under a folder.
  • heading includes Follow-up โ€” only tasks under a matching heading.
  • tags include #work โ€” only tasks carrying a tag.
  • sort by (priority, due, scheduled, pathโ€ฆ) and group by (due, priority, folder, heading, happensโ€ฆ).
  • limit 20, hide edit button, short mode โ€” presentation tweaks.

โš ๏ธ Watch Out

A tasks block only renders in Reading view / Live Preview, not in raw source mode โ€” in source mode you just see the code fence. That's normal. Also note "before tomorrow" is the idiomatic way to say "today or earlier," because due before is exclusive of the date you name. And keep the language label exactly tasks (lowercase) โ€” Tasks or task won't be recognised.

Dataview TASK & Project Notes

You met Dataview back in Lesson 6.2 as the plugin that queries your notes like a database. Dataview can query tasks too, with its TASK query type. So which do you use?

Useโ€ฆ When you wantโ€ฆ
Tasks plugin (```tasks) Rich due/recur/priority handling, recurring tasks, clickable ticking, near-English filters. The default for real task management.
Dataview (```dataview TASK) Tasks pulled by note metadata โ€” e.g. "tasks from every note where status: active and project: Website." Great for tying tasks to frontmatter.

A Dataview TASK query reads like its other queries โ€” it just returns checkboxes:

```dataview
TASK
FROM "Projects"
WHERE !completed AND due <= date(today) + dur(7 days)
SORT due ASC
```

This gathers incomplete tasks from notes in your Projects folder that are due within a week. Dataview's checkboxes are clickable too, and it groups them under the note they came from. Use whichever plugin's mental model fits the question you're asking โ€” many people keep both installed and reach for Tasks day-to-day, Dataview when metadata is doing the driving.

Project notes that aggregate their own tasks

A project note is one of the most satisfying patterns in Obsidian. You make a single note per project โ€” Kitchen Renovation, Q4 Launch, Master's Thesis โ€” and inside it you write the tasks as you think of them, then let a query pull them into a live status list. Skeleton:

---
type: project
status: active
---
# Q4 Launch

## Notes
Kickoff was great. Design owns the hero image; eng owns the API.

## Tasks
- [ ] Finalise hero image #task ๐Ÿ“… 2026-09-18
- [ ] Ship staging API #task ๐Ÿ”ผ ๐Ÿ“… 2026-09-20
- [ ] Draft launch email #task โณ 2026-09-22

## ๐Ÿ“Œ Open items (auto)
```tasks
not done
path includes {{query.file.path}}
sort by due
```

Everything is in one place: the narrative, the raw tasks, and a self-updating rollup. Because the query filters on this file's path, the same block works unchanged in every project note you create โ€” copy it once, paste it forever.

โœ… Pro Tip โ€” one dashboard, many projects

Give every project note type: project in its frontmatter (as above). Then a single Dataview TABLE in your home note can list all active projects, and a single ```tasks block filtering path includes Projects/ can show every open task across all of them. Small, consistent metadata now buys you effortless overviews later.

Kanban & a Simple GTD Setup

Some projects think in lists; others think in columns. Back in Lesson 6.4 (and again in the Visual Thinking lesson you just finished) you met the Kanban community plugin, which turns a note into a drag-and-drop board of "To Do โ†’ Doing โ†’ Done" columns. It stores the board as plain Markdown checkboxes under headings, so a Kanban board and a task query can read the very same file. Reach for Kanban when you want to see flow โ€” what's stuck, what's moving โ€” and for lists when you want to see deadlines. They're two windows onto the same notes.

A lightweight GTD-style setup

GTD (David Allen's Getting Things Done) boils to five moves: capture, clarify, organise, reflect, engage. You can run a perfectly good GTD system in Obsidian with almost no ceremony:

  • Capture โ€” throw every task into your daily note the instant it appears, as - [ ] โ€ฆ #task. Don't sort yet; just get it out of your head.
  • Clarify โ€” once a day, add a due date (๐Ÿ“…), a priority, or a project tag to each new task. Two-minute jobs? Just do them and tick.
  • Organise โ€” move project-bound tasks into their project note; leave standalone ones where they are. The tag is what matters, not the location.
  • Reflect โ€” a weekly review note with a ```tasks block for due this week and another for no due date (your someday/maybe pile).
  • Engage โ€” every morning, open your Task Dashboard (the project below) and work the top of the list.
graph TD A["๐Ÿ“ฅ Capture
daily note: - [ ] ... #task"] --> B["๐Ÿ” Clarify
add ๐Ÿ“… priority, project tag"] B --> C["๐Ÿ—‚๏ธ Organise
route to project notes"] C --> D["๐Ÿ”ญ Reflect
weekly review queries"] D --> E["โšก Engage
work the dashboard"] E --> A

๐Ÿง  Mindset

The perfect task system is the one you actually open tomorrow. Don't build twelve smart queries and a colour-coded board on day one โ€” you'll admire it and never use it. Build one capture habit and one dashboard. Add a query only when you feel an actual pain ("I keep missing recurring bills"). Systems that grow from real friction survive; systems built from enthusiasm alone rarely do.

๐ŸŽฏ Project: Your Task Dashboard

Time to build the note you'll open every morning: a single dashboard that surfaces everything open and due this week, pulled live from across your whole vault. When it works, you'll wonder how you tracked tasks any other way.

๐Ÿ‹๏ธ Build a "Task Dashboard" note

Objective: One note that always shows your open tasks due this week, plus overdue items and things with no date yet.

Instructions (about 25 minutes):

  1. (3 min) Install and enable the Tasks plugin via Settings โ†’ Community plugins. (Optional: also enable Dataview if it isn't already.)
  2. (2 min) Decide your global filter. Simplest start: leave it blank so every checkbox counts. If you want separation, set it to #task and tag your real tasks.
  3. (5 min) Seed some real data. In three or four existing notes, add a couple of tasks with due dates this week, e.g. - [ ] Reply to Sam ๐Ÿ“… 2026-09-17. Add one overdue and one with no date, so every section of the dashboard has something to show.
  4. (5 min) Create a new note called Task Dashboard and paste the three query blocks from the solution below.
  5. (3 min) Switch to Reading view / Live Preview and confirm the lists render and your tasks appear in the right sections. Tick one to confirm it disappears from "open."
  6. (4 min) Add this note to your Bookmarks (or set it as your Homepage with the Homepage plugin) so it's one click away each morning.
  7. (3 min) Tweak: change a due date, add a priority, and watch the sort order update.
๐Ÿ’ก Hint โ€” the three sections you want

A great dashboard answers three questions at a glance: What's late? What's this week? What hasn't been scheduled yet? Make one ```tasks block per question, each with a small heading above it.

โœ… Solution โ€” paste this into your Task Dashboard note
# ๐Ÿ“‹ Task Dashboard

## ๐Ÿ”ด Overdue
```tasks
not done
due before today
sort by due
```

## ๐Ÿ“… Due this week
```tasks
not done
due after yesterday
due before in 7 days
sort by priority
sort by due
group by due
```

## ๐ŸŒซ๏ธ No date yet (triage these)
```tasks
not done
no due date
sort by priority
limit 15
```

If you set a #task global filter, add tags include #task to each block (or rely on the filter doing it automatically). Prefer Dataview? The "due this week" block becomes TASK FROM "" WHERE !completed AND due >= date(today) AND due <= date(today) + dur(7 days) SORT due ASC.

โœ… Project Completion Checklist

  • The Tasks plugin is installed and enabled
  • You added real tasks with due dates in several notes (including one overdue, one undated)
  • Your "Task Dashboard" note shows Overdue, Due this week, and No date sections
  • Ticking a task removes it from the open lists
  • The dashboard is bookmarked or set as your homepage

๐ŸŽฏ Quick Quiz

Question 1: Which emoji marks a task's due date in the Tasks plugin?

Question 2: What does a ```tasks query block actually do?

Best Practices for Task Management

โœ… Do's

  • Capture in context. Write the task in the note that spawned it, not in a far-off list.
  • Give dashboard tasks a due date. Undated tasks vanish from date-based queries โ€” schedule them or triage them.
  • Reuse one path includes {{query.file.path}} block across all project notes for instant rollups.
  • Let recurring tasks recur. ๐Ÿ” turns chores into a self-refilling list you never rebuild.

โŒ Don'ts

  • Don't over-tag. If a global filter of #task feels heavy, leave it blank and let every checkbox count.
  • Don't mix ten date types on one task. Most tasks need only a due date; add start/scheduled only when they genuinely differ.
  • Don't build queries you won't read. One dashboard beats twelve clever views nobody opens.

๐Ÿ““ Learning Journal

Open your Learning Journal note in your vault. After this lesson, jot down:

  • Key concepts you learned
  • Techniques that clicked for you
  • Questions or confusion points to revisit
  • Ideas you want to try
  • Your progress and feelings about learning this

โœ๏ธ This lesson's prompt: Where do your tasks currently live, and what would change if every task were born attached to the note that created it? Name one recurring obligation you keep forgetting โ€” how would a ๐Ÿ” recurring task and your new dashboard catch it next time?

๐Ÿ“ Lesson Summary

๐ŸŽ“ Key Takeaways

  • Native checkboxes are plain Markdown โ€” - [ ] and - [x] โ€” clickable in Reading view and portable everywhere.
  • The Tasks plugin adds emoji metadata: due ๐Ÿ“…, scheduled โณ, start ๐Ÿ›ซ, priority ๐Ÿ”บ๐Ÿ”ผ๐Ÿ”ฝ, recurrence ๐Ÿ”, done โœ….
  • ```tasks query blocks gather matching tasks from the whole vault with near-English filters, sorting, and grouping.
  • Dataview TASK queries pull tasks by note metadata; project notes aggregate their own tasks; Kanban gives the same tasks a board view.

๐ŸŽ‰ What You've Accomplished

You've turned your vault into a real task manager โ€” one where a to-do lives beside the thinking that created it, yet still rolls up into a single morning dashboard. You can write, decorate, and query tasks, and you have a lightweight GTD loop to keep them flowing. That's a genuinely capable productivity system, built entirely from plain text you own.

โ“ Common Questions at This Stage

Do I have to use the emoji, or can I hide them?

You never type them by hand if you don't want to โ€” use the Tasks "Create or edit task" command for a form. And if the icons feel cluttered, the plugin offers a "short mode" and hide lines in queries. Some people also prefer the Dataview-style field syntax ([due:: 2026-09-18]), which Tasks can be configured to read instead. Pick whichever you'll actually keep up.

Tasks vs Dataview โ€” do I really need both?

No, one is plenty to start. Choose Tasks if your questions are about dates, priorities, and recurrence (most people). Choose Dataview if your questions are driven by note frontmatter ("tasks from every note where project: X"). Many power users run both and reach for each where it's strongest โ€” but that's an optimisation, not a requirement.

My ```tasks block just shows the code, not a list. What's wrong?

Almost always one of three things: you're in source mode (switch to Reading view or Live Preview), the language label isn't exactly lowercase tasks, or a global filter is set and your test tasks don't carry the required tag. Add the tag, or clear the filter, and they'll appear.

๐Ÿ”ญ Looking Ahead

Your task system now lives inside your vault โ€” which means it's only as safe as your vault is. In the next lesson we make sure your notes exist in more than one place and can survive a mistake or a dead drive: the crucial difference between sync and backup, and how to set up both for free or cheaply.

โœ… Before the Next Lesson

  • Use your Task Dashboard for at least one real morning
  • Convert one recurring chore into a ๐Ÿ” recurring task and tick it once to see it regenerate
  • Write your Learning Journal entry for this lesson

๐Ÿ“š Additional Resources

๐ŸŒŸ Encouragement for the Journey

You just closed the gap between "the notes I keep" and "the things I have to do" โ€” a divide that trips up most PKM setups. From here, your second brain doesn't just remember; it reminds. Open that dashboard tomorrow morning and feel the difference. ๐Ÿ”ฎ