[20210608 Update] My Project Management Workflow using obsidian-dataview

A thousand miles journey is started by taking the first step.

Here is the workflow for me to manage schedule tasks in Obsidian. The obsidian-dataview plugin is required to list projects/actions automatically.

You can download the demo on my GitHub.

Project View

As the image shot shown above, 2/5 means there are 5 actions total in that project, and I have done 2.

  • N/A means there is no action in this project.
  • Blocked means there is no Active action in this project. Telling that you shoud put some actions into active state.

Action View

A project

An action

Archived Projects

Features

  • āˆš Project View: Show all projects in a view.
  • āˆš Action Views: Show all actions in a view.
  • āˆš Archive Projects and Actions: Making Project View and Action Views more focusable.
  • āˆš Tag name customizable: If you donā€™t like the tag below, you can rename them!
  • āˆš Display the progress of action for an program
  • āˆš Display progress of task for an action

I got some idea from other posts in the forum, so I build it for my own.

First of all, this is NOT a fully implemented GTD system, but a project management system. It manages your projects, project-related actions (like ā€œTasksā€ in GTD), and simple actions (actions do not belong to any project.)

- Project A
	- Project-related Action 1
	- project-related Action 2
- Project B
	- Project-related Action 3
- Simple Action 1
- Simple Action 2

A project is a markdown file

In this workflow, If an .md file with a #project tag in it, then itā€™s a project.

There are also some properties so call Inline Fields that using in a project file.

  • start_date::ļ¼šThe date when this project has been started.
  • end_date::: The date when this project is finished.
  • state::: I use Obsidian Nested tags to manage the states of a project. The available tags are as follows:
    1. #project/active: when this project is active.
    2. #project/archive: when this project has been finished and It was no need to be display, I marked this tag to this project.

A action is also a markdown file

Defferent from a task - [ ] in the .md file, an ā€œactionā€ is also an .md file, with a #action tag in it.

An action also contains some inline fields:

  • project::: If an action contains this inline field, itā€™s an project-related action. The value of this field SHOULD be an Internal link to the project. If the value is not given, then this is a simple action.
  • due_date::: The due date of this action.
  • start_date::: The date when this action has been started.
  • end_date::: The date when this action is finished.
  • priority::: A > B > C, or 1 > 2 > 3.
  • state::: Just like the state field in a project, all action states are as follows:
    1. #action/active: when this action is active, hard working to deal it.
    2. #action/waiting: when this action relies on other action or relies on somebodyā€™s response, I mark this action into this state.
    3. #action/done: when this action is finished, mark this action into this state, and update the end_date.
    4. #action/canceled: when this action has been finished.
    5. #action/maybe: Actions that you may do in somedays.
    6. #action/archived: when this action has been finished and It was no need to be display, I marked this tag to this action. I usually do this for the Single Actions.

Priority

A > B > C > D ā€¦, or 1 > 2 > 3 > 4 ā€¦ (using default sort method) is ok!

About dataviewjs

I use dataviewsjs blocks instead of dataview blocks because I can write Javascript code inside a dataviewsjs block and it can do much complex work than Dataview Query Language. For example, I can join two table using JS, but the JOIN statement hasnā€™t implemented in DQL yet.

I put all my JS code into /tools/dv-script/ folder, and they are all *.js files. There are some advantages:

  1. I can use VSCode to write code (VSCode).
  2. Better for code reusing.
  3. Letting dataviewsjs block take up less space than writting all the raw code in the block. For example, to show the project view, I just need to write 2 line:

refs:

8 Likes

This is a really nice approach, Iā€™m using the Action as a subproject or Milestone and inside of the Action I have tasks. Its working fine for me. Do you have any update you can share?

Iā€™m glad you like it.

I had updated my theme css in this recent days. But that is another topic(ļæ£oļæ£) .

I refactored my code for users that didnā€™t like using the tags I had used, so they could easily rename them.

Iā€™m going to write some code to create projects & actions by just clicking a button and then prompt for some inputs.

The main problem for me is that I canā€™t track the action tasks (written in action.md file) in a single view. I can display them but they donā€™t toggle the state when I click the checkboxs. I had tried some ways butā€¦

Any suggestion or improvement is ok!i

Hi! Iā€™m getting this error message in the project viewā€¦


Can you help me?

I think you had possibly set a wrong format of type Date. Date format should fit the ISO-8601 Standard (See ISO 8601 - Wikiwand)

Such as:
end_date:: 2021-06-14

The error you shown was reappear when I set a wrong end_date like:
end_date:: aabbccdd

perfect! I will look into it, thanks!!!

The problem was that I was putting date::[[2021-06-21]], as a link

Very nice, I donā€™t have javascript skills but Ithink Iā€™m gonna try.

About the tasks, have you tried The ā€œTasksā€ Plugin? GitHub - schemar/obsidian-tasks: Task management for the Obsidian knowledge base.

It has a funcion that display the tasks of another files, filter based, and the tasks showed are clickable

Awesome :slight_smile:

How did you rename the ā€œfileā€ column in dataview to ā€œprojectsā€, ā€œactionsā€, etc?

I know how to rename the other columns ā€œattribute AS nameā€ but canā€™t seem to change the name of the first column from ā€œfileā€ to something elseā€¦

Thanks

Wondering if anyone has this working for iOS? The issue seems to be around sharing code based on some searching I did in the Dataview GitHub page.

1 Like

Just wanted to thank you for your demo, your approach is exactly what I was looking for in the transition from notion. I donā€™t have much JavaScript experience, but since I am using it for academic research, I implemented other tags for publications to go together with the project tags, and it works amazing!

I think this post may help you ā€“

I rename the ā€œfileā€ column using DataviewJS