How to create a task management system with dependencies in Coda (with free Coda doc)

In a solid project management system, you can create meaningful task dependencies. For example, you can ensure that a subtask can only be completed when its parent task is complete. Additionally, you can automatically update the dates of child tasks when the parent task's date is updated.

Coda allows you to develop your own task management system using the tool’s building blocks and advanced formulas. I have created a sample task management system with dependencies in Coda, and this post explores how the system works and how I approached building it. If you prefer to watch a video, you can click here, or watch it below.


Build the task table

The first core component of a task management system is a table of tasks. If this is part of a broader project management system, you can also link this table to your “Projects” table via a lookup column in Coda. For this post, however, we will keep things minimal and use a “Tasks” table to show the functioning of dependencies in Coda.

Two key columns in the “Tasks” table are Blocked By and Blocking. These are lookup columns, referencing the same table. It’s a self-referential lookup within the “Tasks” table. That’s the building block of dependencies. When a task is “blocked by” another task, the former can’t be marked as “complete”. There is a parent-child relationship between the two. The “blocked by” column is a manual lookup, where you can pick the parent task. The “blocking” column uses a formula to show the reciprocal relationship: Lookup(thisTable,thisTable.ParentRow ,thisRow.RowNumber).

A screenshot of the “Tasks” table in Coda

A screenshot of the “Tasks” table in Coda

Another essential feature in a system with task dependencies is the ability to mark a task as “done” only if the parent task is also complete (or if there is no parent task). That’s what the “Done” button in our Coda table does: it conditionally allows you to mark a task as complete/incomplete by clicking the button. When it is greyed out, it means you can’t click it. When it is orange, it signals you can click it. You can check out the button settings in the screenshot below, or watch the video for a comprehensive explanation. Essentially, we want to make the button clickable when these criteria are met: the task does not have a “blocked by” value, OR the “blocked by” value is complete. In other circumstances, the button should not be clickable (and we use the “disable when” setting to define this rule: thisRow.[Blocked By].Completed=false).

A screenshot of the “Done” button settings

A screenshot of the “Done” button settings

Create automation to power up task dependencies

In our Coda task-dependencies system, each task has a “Start Date” and an “End Date”. When we edit a parent task’s “End Date”, we want the system to automatically update the “Start Date” of the children tasks to match it. There are multiple ways to approach the development of this solution. One way (and the one I use in this example system) is Coda’s native automation. In particular, we are using two automation:

  1. When the “End Date” of a parent task is updated, change the “Start Date” of the children tasks to match.

    This automation allows you to not worry about manually updating tasks when you edit a date in your system. You can watch the video for a detailed explanation of the automation trigger and action.

The trigger of the automation

The trigger of the automation

2. When you add a parent task to a child task, update the task’s “Start Date” based on the parent task’s “End Date”.

This automation rule is especially useful when you add new tasks. If you add a new child task, its “Start Date” will populate automatically based on the “End Date” of the parent task. This happens via a “push button” in Coda (one of the ways you can approach this feature). When the automation runs and meets the condition criteria (”Blocked by” is not empty), it will push a button that is part of our “Tasks” table, whose action is to update the “Start Date” of the children tasks with the “End Date” from the parent task. The button is disabled if a task does not have a “Blocked by” (parent) task.

Timeline view

Finally, you can create a timeline view of your tasks using the “/timeline” command within your Coda doc. The timeline will display task dependencies visually through an arrow connecting them. You can click on each task to open its page, and you can also drag and drop each task to change its start and end dates.

A screenshot of the task timeline view with dependencies

A screenshot of the task timeline view with dependencies


This is one way to develop a task management system with dependencies in Coda. Coda’s powerful and versatile formulas and interactive components (e.g., buttons) provide a wide range of approaches to reach the same result. In this post, we looked at the critical components of a dynamic, solid task management system with dependencies in Coda and the logic behind its key features. You can watch the full walkthrough video here.

 
 



Similar Articles


Affiliate Links

Previous
Previous

Notion Wiki: how you can leverage knowledge sharing in your organization

Next
Next

A Business that Questions Growth: The Company of One