Dataview task and project examples

Ok, here are some examples of templates and dataviews for task management:

name Add Task
type note(New Task) template
action Task Template
class dataview-button

Available Tasks

table Completed, Priority, Project, defer-date as "Defer Date", due-date as "Due Date", recur-length as "Recur Length", defer-date + recur-length as "Next Date"
from #tasks
where defer-date < date(now) and completed != 1
sort doDate asc

Upcoming Tasks

table Completed, Priority, Project, defer-date as "Defer Date", due-date as "Due Date", recur-length as "Recur Length", defer-date + recur-length as "Next Date"
from #tasks
where defer-date > date(now) and completed != 1
sort doDate asc

Completed Tasks

table Completed, Priority, Project, defer-date as "Defer Date", due-date as "Due Date", recur-length as "Recur Length", defer-date + recur-length as "Next Date"
from #tasks
where completed = 1
sort doDate asc

name Add Project
type note(New Project) template
action Project Template
class dataview-button

table Status, length(tasks) as Total, sum(tasks.completed) as Completed, sum(tasks.completed) / (length(tasks)) * 100 + "%" as Progress, tasks[0] as "Next", file.mtime as Modified
from #projects
sort file.mtime asc

#projects
Status:: Active
Tasks::

Remaining Tasks

table Completed, defer-date as "Defer Date", due-date as "Due Date"
from #tasks 
where Project = this.file.link and completed != 1
sort due-date desc

Completed Tasks

table Completed, defer-date as "Defer Date", due-date as "Due Date"
from #tasks 
where Project = this.file.link and completed = 1
sort due-date desc

These all roll up to Goals, Aspirations, Pillars, etc.

I use ScriptKit to quickly capture tasks via a global keyboard shortcut.

Video: Dropbox - TaskExample.mov - Simplify your life

Related:

18 Likes

I slowly am starting to see Obsidian as Notion Competitor in FOSS Space. Thanks for Sharing.

5 Likes

Some great ideas here, thanks for sharing!

I see what look like column sorting arrows on your dataview tables. How did you achieve that?

1 Like

Yes! This is exactly what I’ve hoped for too!

1 Like

Those are from GitHub - alexandru-dinu/obsidian-sortable: Wikipedia-like table sorting plugin for Obsidian. .

Although after the dataview auto update for preview feature addition the sorting isn’t working as well. I believe the plugin author is working on it.

1 Like

WOW, so I am managing work projects VERY SIMILARLY to your approach!

I adapted mine from a GitHub project, was it yours?

In my daily work I manage my team and we work with multiple other teams and individuals internally and externally and have to bounce between them quite a bit, so I almost have to keep a pseudo-CRM in the process along with project & action tracking.

In my approach:

  • core tags: #project/project-name #meeting #sigact (explained below) #action #person and #team
    • your #task becomes #action in my system to avoid confusion with the term task as a checkbox item and to match “action item” terminology
  • everything revolves around the day with the calendar & daily notes & templater plugins
  • each note averages about 4 templated dataviews (plugin author is working on allowing us to dynamically include queries so we can further standardize and reduce template-built queries)
  • daily notes, meetings, and “significant actions” are all in a single Timeline folder
  • everything in timeline folder is prefixed with the day in a standard format:
    • daily note: 21.04.Apr.23.Fri
    • meeting: 21.04.Apr.23.Fri (M) Some title here
    • sigact: 21.04.Apr.23.Fri (S) Some thing I want to specifically note
      • ex: copy in text of important email I sent/received, note on decision that was made, etc
  • #action has a from: metadata field that is populated with a link e.g. from: [[Team - Foo]] or from: [[21.04.Apr.23.Fri Some meeting I had]]
  • meeting notes, team notes, person notes etc have dataviews showing actions related to them via the from field
  • actions and projects have optional due dates and defer dates, and daily notes run dataview queries almost exactly as you do to show overdue, upcoming due, etc.

I also have Keyboard Maestro shortcuts e.g. Cmd M prompts for a meeting title then it fully automates Obsidian to create a new meeting in the timeline with the appropriate date prefix and template applied and open on my screen ready to enter notes.

There’s more but its crazy effective. It may not be as polished and slick and effective as a dedicated piece of software but it is 80%+ effective AND MASSIVELY CUSTOMIZABLE.

It’s not for ultra-fine-grained task management (i.e. not for grocery lists, chore lists, etc) but it merges my strategy notes with my operational planning and tactical execution notes all in a “single pane of glass” app.

What I DON’T have currently are:

  • buttons for new project/action/etc
  • next action designations

I was planning to experiment with adding these but you’ve already done that so I’m totally stealing those. :slight_smile:

Thanks for starting this thread!

4 Likes

that is absolutely splendid. thank you for sharing!

1 Like

Wow. All those nested layers of metadata… your 4 posts are simply a masterclass in using Obsidian as a PIM. The % progress is so clever.

I notice that you are using the new inline fields syntax :key:: value. Curious why you prefer this over frontmatter.

1 Like

Thanks for sharing! If you got it from github, it wasn’t me! I’d love to see some screenshots of how your process works (no pressure though I know it’s a lot of work lol). I love getting new ideas for how I can tweak things! I’m really excited about managing tasks, projects, goals and beyond in Obsidian because plaintext! Future proofed! No proprietary format or lock in! :sunglasses:

1 Like

Thank you! There are a few reasons that I use inline fields vs yaml.

  1. A link in yaml doesn’t show as a backlink.
  2. If you rename a page you have linked in yaml the link doesn’t auto update like it will in the page.
  3. yaml doesn’t allow for linking something like [[@person]] and this is how all of my people pages are titled.
  4. I like to write inline as I find it much more natural and can give me more context.
  5. Fields inline seem to be much more forgiving as far as syntax goes vs yaml. You can use normal lists, format with markdown, etc. yaml seems fragile to me. Hope that helps!
5 Likes

Wow, really cool! Thanks for sharing!

You mention: “these all roll up to Goals, Aspirations, Pillars, etc”. I am curious, could you explain a bit more about what that means? Is this similar to the Notion PPV framework of August Bradley? (I saw PPV was mentioned in the screenshots in the Knowledge Management post so I thought that might have been a source of inspiration for your system?)

2 Likes

Yes, August Bradley’s PPV is a big inspiration for my system!

What I mean when I say rolls up is that all of the smaller pieces belong to a larger piece above them. So all of my tasks belong to a Project or a Habit/Routine. All of my Projects or Habits belong to a Goal, all of my Goals belong to an Aspiration. All of my Aspirations belong to a Pillar.

These are all connected via metadata and backlinks and each has their own page with a dataview table so I can see everything at once (similar to the Projects page).

2 Likes

Yes!! Love hearing these reasons. YAML felt so fragile and inline felt so much better, but those were just feelings. Seeing how you articulated it, it is now very clear in my mind. Thanks for sharing your work and explanations!

2 Likes

Thank you for sharing. this is really cool!!

Somehow progress in projects view is not working for me. I see that this value is calculated from tasks which is field in project template but I am wondering how it is populated?

1 Like

Thanks @arminta & @davecan for all your posts and this one in particular. I’m looking to rip and replace Notion as my task manager + meeting notes store and this gives me so many ideas and motivation. I started looking at OmniFocus, but it just doesn’t give me the customization (metadata) that I’d like and now I have a fantastic solution.

I’m curious if you have more than one Obsidian vault, similar to @davecan, one for task / project management and another for PKM / Zettlekasten?

1 Like

Hey @davecan - how do you name the files of your actions / tasks?

They are given a normal name capturing that action. E.g. Tell Bob about blah as a fine-grained one or Develop strategy for foo for a broader one.

All actions go in an Actions folder. All projects go in a Projects folder. Project notes are typically converted into folders using the Folder Notes plugin.

Thanks to Keyboard Maestro I can press Ctrl-A to create an action, Ctrl-S to create a significant action note, Ctrl-M to create a meeting note. KM prompts me for a title and then creates the note, names it appropriately, applies the template, etc. Just takes about 3 seconds.

1 Like

Thanks for the detailed insights!
From above I see that you use tags for all your projects, does this mean that if you were to rename a project you’d have to rename it in 2 places"

  • the #project tag
  • the project folder / note

I personally wanted to use a “note” as a project, but ran into some strange behavior of dataview with that.

That is a very weird bug, hopefully it gets fixed.

Yes if I were to rename a project it would have to be renamed in the tag as well.

I considered using metadata instead of a tag but I liked the “visual” of having the project tag attached to actions.

It looks like this which I find very pleasant and intuitive, since it reads as “this is an action belonging to that project”

One downside is it means a query for #project also returns these so I have to filter out where file.tags also contains #action.

The meeting note & person notes & project notes all have queries that find where this.file.link is referenced in actions along with their status/reason. In the project notes it also has a filtered query showing only actions for that project tag (injected to the dataview query via Templater when the note is created from the template). Person templates show me what actions I owe to that person, what I’ve delegated to them, what I’m waiting on from them, etc.

Hi, really great use of obsidian together with dataview. You inspired me for my own task and project management within obsidian. But I have one question regarding your project template and the project overview table.

Do you fill out the tasks:: field manually or how does the length() and sum() functions are working there? It looks like you would query a dataview query? That would be awesome, but I can’t get it to work.

1 Like