Fork Me on GitHub

To ☞ Done!

An application for managing projects and tasks

download .ZIPdownload .TGZ


To ☞ Done! is a web application for managing projects and tasks. The concept of estimation and progress tracking is loosely based on a method described by Joel Spolsky in his Joel on Software weblog. I’ve used Spolsky’s approach of tracking time via “original estimate,” “current estimate” and "remaining" for every task. The modest departure I’ve made is to track the estimate and the remaining over time. This permits me to show work burndown and burnup in an Agile fashion.

Note that this is a single-user application — no login is required. Authentication and task ownership are not yet in scope.


Tasks are grouped in projects — both are first-class entities in the application. Estimates and work remaining are recorded at a task level, but these numbers are also rolled up from tasks to the project they belong to.

You can estimate a task and record time remaining on it, changing these values whenever you wish. A historical record of these changes is kept automatically on a daily basis (only the last of multiple changes per day is kept).

A task is considered “finished” when its latest work-remaining value is zero. You can always bump the work remaining on a task above zero to mark it again as “unfinished.”

The order of unfinished tasks in a project can be changed at will. Finished tasks retain the order they were given while they were still unfinished.

Tasks are also categorized as either “original” (i.e., the work was known at the start of the project), or not “original” (i.e., the work was added at some point after the start of the project). This mechanism helps reveal scope creep in a project, because only the estimates on original tasks are reflected in the “original estimate” of a project.

Projects can be placed on a back burner, so to speak, by “closing” them. Closing and reopening projects is easy and leaves no audit trail.

The dashboard is a way of seeing the top task for every open project, all on one page. This supports a work style in which only one task in a project is being actively worked on at any time. When a different task is moved to the top of its project, it will be the one that shows up on the dashboard.

You can search globally across projects and tasks — both their names and the longer notes on them.

Getting it running

To ☞ Done! runs on Rails v2.1.1. Rails is installed in the vendor directory, so you will have no need of installing the Rails RubyGem on your computer.

Rails of course needs Ruby. This project was developed under Ruby v1.8.6. You may have some success running it under other versions of Ruby, but I haven’t tried.

The database is SQLite3. You will need to install that database engine, in addition to the Ruby bindings. Download and install SQLite3 from its web site ( Then install the Ruby bindings by typing the following at a command line:

gem install sqlite3-ruby

This command presupposes that the RubyGems package manager is present on your computer.

With the prerequisites in place you can proceed to start the server. From the root of the project, type:

ruby script/server

Then point your browser at http://localhost:3000. If all is well you should see the To ☞ Done! dashboard.