Emacs org mode works great for this sort of thing. I create a different agenda file for each project where I keep todo's and general notes for the project. I can then do a C-c a t to view the global list of todo's. Org mode can also be combined with the calendar to view items by day / week, etc. I'm still new with it so I'm not a guru, but so far it works great.