ToDo Manager

Application Kata „ToDo Manager“

Develop a web application to manage tasks in todo lists.

Basic data model: Tasks are organized in lists. Each list can contain zero or many tasks. But each task belongs only to one list.

Task data

  • Title, just a single line of text to be displayed in task overviews.
  • Description, a multi line text to explain what is meant by the title.
  • Due date, i.e. on this day the task has to be accomplished; when the due day has been reached the task should be highlighted in some way in its list.
  • Importance, a boolean value to signify whether the task should be handled with priority; if so the task should be listed at the top of its list.
  • Archive status, a boolean value to signify whether the task has been archived; if so it should not be displayed along with non-archived tasks. The default for a task is that it’s not archived.
  • Owner, the email address of the person who feels responsible for a task to be accomplished. This is of interest if tasks are managed by several persons.

Task list data

  • Title, just a single line of text to be displayed in task list overviews.

When the application is started by entering its URL in the browser it should show an overview dialog like this:


On the left the todo lists should be displayed, each with title and current number of tasks in it. On the right the tasks in the currently selected todo lists should be displayed.

Below the lists there is a text entry field for new items. When a title is entered and the plus-button is pressed a new list/task is added. When a new task is added the number of tasks in the current list needs to be updated.

Deletion of lists/tasks needs to be possible, too. Maybe by using an additional button, maybe by using an additional column in the lists?


The same holds for a way to edit the items in the lists.

Editing a list’s title, though, should not lead to a completely new dialog replacing the list overview. But editing the detail information of a task may open a new dialog like this:


Selecting a list on the left causes its non-archived tasks to be displayed on the right. Checking “Show archived” causes the display of only the archived tasks of the current list.

When adding a task, the currently logged in user is automatically assigned as the owner.

Tasks can be changed by any logged in user – but if they are changed by somebody not being the owner the owner is informed by an email about the change.

Logging in is optional. But without login no changes to lists/tasks are allowed; all data then is read-only.

The transition from logged out to logged in should look like this:


A logged in user should be remembered across sessions on a computer (e.g. by using cookies).