How to Manage Projects in Obsidian

This article is part of a series of tips on handling tasks in Obsidian. To see the full series, see How to Manage Tasks in Obsidian (master article).

We’ve already discussed why you might want to manage projects in Obsidian, now let’s talk about how. How do you set up Obsidian to properly manage projects?

My advice: create a project view. Using a plugin called Dataview, you can create a dynamic dashboard that helps you keep all of your work properly organized.

The project view gives you a wider overview of your current projects, and helps you to keep a broader perspective. The project view is used for review, and for choosing your priorities every day.

This isn’t the only way to manage projects in Obsidian, but for complex multi-task projects, it can be just the thing you need. Let’s dive in.

Limitations

Note that this project workflow does not focus on due dates: we created the today view specifically to handle due dates, the project view is meant to give you a high level overview of all of your commitments. If you want to handle deadlines and due dates, see Creating a Today View in Obsidian.

Additionally, this is a tag-based workflow, so you have to remember to keep those tags up-to-date. I recommend you review your project view every week, and that way you ensure that you aren’t missing anything.

(It’s not a bad idea to set up a recurring task for this. If you have a Today view, then it will remind you to review every week)

Prerequisites

Using Tags to Track Project Status

If you want an automated project view in Obsidian, then you’ll first need a way to designate the status of a project.

I recommend tags for this. Tags are easy to use, they autocomplete, and Dataview loves them. I have four different tags that I use to track project status. I use these tags to sort projects by priority, similar to how I sort tasks in my today view.

Here are the four tags I use:

  • #‎project/soon 
  • #‎project/active 
  • #‎project/routine 
  • #‎project/archive 

I also use tags to separate my personal from my work projects. To do that, I add one of these two tags to each project:

  • #‎work
  • #‎personal

There are a couple of other bits of custom data I add to some projects, including a standing, a priority, and a deadline. I add these using Dataview variables, which look like this:

  • standing:: in progress
  • priority:: 0
  • deadline:: 2024-01-01

Project Templates

To keep all of this straight, I created a “New Project template”, which I use to create each new project.

If you use the Core Templates plugin, this template should work for you too. Feel free to modify it to fit your needs, the important thing is the tags, and the Dataview variables if you choose to use them:

[[Client MOC]]
%% tags: #work #project/soon %%

standing:: coming soon
priority:: 0
deadline:: 2023-01-01

# {{title}}
- [ ] Todos go here

Note: I also hide the tags in preview mode using percentage signs: if you prefer to see the tags, feel free to remove those.

Creating Dataview Dashboards to Manage Projects in Obsidian

It may seem like a lot of work to get that set up, but it will be worth it.

Once you have a few projects set up in your vault, you can then start to query your projects with Dataview.

I like to create a few separate views. For example, I have a work view and a personal view. Each view displays only what I need when I need it.

This is one of the strengths of using Obsidian for projects: you can customize your views and fine-tune them to show only what you need.

Displaying All Active Projects

My Active Projects view looks like this:

That table is created using this Dataview code:

```dataview
table standing, priority
from #project/active AND "Projects"
sort priority desc
```

Note: I keep all my active projects in a “Projects” folder. If you prefer to have your projects spread out (or in a different folder), change the line that says AND “Projects”.

This code creates a table, and includes all my active projects, sorting them by priority.

The main reason I add priority to my projects is so that I can sort them. I like to have my most important project at the top. But you could also sort by file.name or file.mtime (date last modified).

Displaying Ongoing Projects

I like to separate my active projects from my ongoing projects. Active projects often have due dates and they are completed and archived once all the tasks are complete.

Ongoing projects are different. I use ongoing projects for chores, routines, areas of interest, anything with repeating tasks and no definite end date.

The goal of an Active Project is to finish it, the goal of an Ongoing Project is to make steady progress over long periods.

To see ongoing projects, I use the tag #project/ongoing, and this Dataview code:

```dataview
table standing
from #project/ongoing
sort file.name asc
```

I find the order less important here, so I sort alphabetically.

Displaying Upcoming Projects

After listing my active and ongoing projects, I like to see projects that are coming up. For those projects, I use the tag #project/soon, and you can see those projects using this code:

```dataview
table standing
from #project/soon
sort file.name asc
```

Displaying Archived Projects

You may or may not want to list your archived projects. Some people like to see them and to see the list grow over time, others like archived projects to go away and leave them alone.

The choice is yours. If you do want to see your archived projects, you might want to simplify and limit the list. Or create a new view, perhaps called “Archived projects”. For example, here’s a query that spits out a list of your latest archived projects, sorted by modified date, and limited to 15:

```dataview
list
from #project/archive
sort file.mtime asc
limit 15
```

Just Use Kanban?

If you haven’t heard of Kanban before, it’s another method you could use to display this kind of information. There’s an excellent Kanban community plugin you can use, if that interests you. It looks like this:

This is my “Writing Board”, I like to use Kanban to keep track of articles that I am working on.

Unfortunately, at the time of writing, the Kanban plugin doesn’t support pulling in cards dynamically. It’s still a very useful plugin, but none of the above Dataview queries will work in tandem with Kanban at this point. You have to manage each card manually, which is less useful for me. The developer is working on fixing this, but until that functionality is available, I prefer a more dynamic solution.

One response to “How to Manage Projects in Obsidian”

Leave a Reply

Your email address will not be published. Required fields are marked *