In 2008 I started a personal productivity project called Done!. Done! was a simple yet powerful tool for managing your tasks, designed to be configurable and flexible. Ultimately work and graduate school interfered and I shelved Done! before it was ready for release. Regardless, it was a feature rich project.

For example, if you like to organize tasks for a project into trees, Done! provided an edit mode with support for hierarchical task lists:

Hierarchical Tasks

Or flat lists in hierarchical projects:

Hierarchical Projects

Both modes supported extensive drag and drop to allow re-organizing of tasks and projects.

  • Drag a task in the task tree: If you drop a task on another task, you will move the dragged one to a new location in the list. This is how you can reorder tasks. If you drop the task at the bottom of the task tree it will be moved to the bottom of the tree. You can also drag tasks, and lists, in ways that move them into different lists.

  • Drag a task to the project tree: If you drop a task on a project it will be append to that projects list, and removed from its current list. If you drop a task on the blank area of the project tree, a new project is created with a single task. The same is true for lists. So creating a project for a list is simply a matter of dragging the list into a blank area of the project tree.

  • Drag a project within the project tree: Projects can be ordered, and moved using dragging, just as tasks are. This powerful system allows you to organize projects any way that you want to.

  • Drag a project into the task tree: Dropping a project on a list will result in the project being removed, and its contents being converted into a list. That list is then inserted into the current task list.

There was also a work mode with a single working list computed from other your full task tree:

Work Mode

Done! supported contexts, tags, colors, priorities and importance settings in a way that allowed you to hide or show them depending on your preferred system.

Finally, Done! supported Lua based rules for scheduling recurring tasks and acting on existing tasks.

mac cocoa ux objective-c lua design