Return home

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.

comments powered by Disqus