Plaintext task management for graph nerds.
Switch branches/tags
Nothing to show
Clone or download
Latest commit 495c0ae Jun 22, 2017
Failed to load latest commit information. add screenshot Jun 22, 2017
USAGE tg block, unblock Apr 8, 2017
cmd.js Build an index of task -> parents. Apr 9, 2017
package.json 0.1.0 Apr 8, 2017
screenshot.png add screenshot Jun 22, 2017


standard-readme compliant

Manage tasks as a directed acyclic graph. Hardcore mode!

Table of Contents

Stability: Experimental

I'm still experimenting regularly with tdag: its current state may not reflect its future state much at all. Use with caution: commands or underlying database structure may change without warning!


So many task management systems structure tasks as lists, or, in the better case, as trees. However, neither accurately captures the aspect of multiple parents. What we really need is a directed acyclic graph (DAG) to express the more complex relationships that tasks tend to have.

I like modeling my problems as potentially deep graphs that capture the top-level problem statement, all the way down to the discrete concrete tasks I need to do to work up one level of abstraction to the next layer of tasks. Oftentimes completing one task ought to free up multiple tasks all over my task set, which a graph captures well.

tdag offers the tg command, which provides quick command line access to your task graph. tg wants to be really good at understanding task blockages and dependencies, in order to excel at answering the question, "What things can I work on now?".


npm install -g tdag



    print all top-level tasks

  tg ID
    print the dependency tree rooted at ID

  tg add "fix hyperlog dataset issues"
    insert task at root

  tg add ID "regen waoroni log /wo corruption"
    add task that is a dependency of todo #ID

  tg ready
    print all tasks that are ready to be worked on

  tg done ID
    mark a task as done

  tg block ID
  tg unblock ID
    mark a task as blocked or unblocked

Example Use

TODO: expand on this!

sww@figure8 $ tg ready
0   ° Try to use tdag for a real project
  1   » foo
    2   ✓ bar
  2   ✓ bar
  3   » finish readme

sww@figure8 $ tg done 3

sww@figure8 $ tg ready
0   ° Try to use tdag for a real project
  1   » foo
    2   ✓ bar
  2   ✓ bar
  3   ✓ finish readme

Background: Operation

tg manipulates a file named todo.json in your current directory. This is nice for easy per-project use, but might not always be desirable and may change in the future.

tg operates on a plain JSON file. This is convenient right now, but may change in the future. However, tdag will always operate on human readable text formats!


PRs gladly accepted! Open an issue or submit PRs.

tdag follows the Contributor Covenant Code of Conduct.


MIT © Stephen Whitmore