Crazy Simple Project Management
2014-10-14
I wanted a way to track todo items for different personal projects and keep notes about them. Sort of like a wiki + issue tracking.
Turns out this is trivial with text files.
Consider a directory structure like the following:
projects/
projects/general
projects/bathroom_renovation
projects/fence_repair
projects/cosmetics_startup
Each project has its own text file:
General
=======
This is a bucket of global tasks with no specific project.
## TODO
- make breakfast
## COMPLETED
- walk dogs
- brush teeth
- get dressed
----
Bathroom Renovation
===================
This needs to get completed ASAP.
## TODO
- install wainscoting
- install bathroom door
- install toilet
- tile bathtub
- paint walls
- install sink
## COMPLETED
- install tub
- tile floor
Now with an awk script like this (with chmod +x applied):
#!/usr/bin/awk -f
/^- / { print }
/^## COMPLETED/ { nextfile }
If I execute the following:
chmod +x todo.awk
./todo.awk general bathroom_renovation
I get the following todo list:
- make breakfast
- install wainscoting
- install bathroom door
- install toilet
- tile bathtub
- paint walls
- install sink
Completed items are ignored (i.e. any item after the ## COMPLETED
heading).
Now I have a very flexible todolist manager:
# Only show general todos
./todo.awk general
# Show all todos
./todo.awk *
# Pick the first item off the list
./todo.awk * | head -1
This simple script could be extended to support things like location tags and due dates by matching on todo item lines. I’m going to try this out for a while and see how it evolves.
========
UPDATE 2014-10-14 04:55 PM
So, since I published this I created a repository of my evolving project management script:
https://github.com/nuex/todo_evolution
Now its a shellscript that supports showing items due today by using a + instead of a - to denote the task.
It also has a brick
action that shows the first item due today for each project.
The name brick
alludes to one task from each project being a brick layed toward
its completion.