Architecture Kata “Kanban Board”
Develop a software system to support distributed teams by letting them jointly manage their tasks on a shared Kanban board.
A Kanban board consists of a number of columns which can be customized, e.g. ToDo, In Dev, In Test, Done.
Each column can container several tasks up to a column specific maximum (Work-in-Progress limit (WIP limit)). A task consists of a title, an author, and for each column they got moved to a timestamp. In addition tasks can be assigned a color.
New tasks are introduced only in the first column. From there they can be dragged to next column and so on – but only if the destinations WIP limit hasn’t been reached.
In each column a task needs to be assigned to a team member who will be responsible for accomplishing it. Unless a team member has been assigned the task can be pushed back to the previous column. But as soon as a team member has been assigned it’s fixed to that column and can only be dragged to the next column.
However there are to types of columns: activities and queues. Both have WIP limits, but only activities require an owner to be assigned. ToDo or Done are typical queue columns, In Dev is a typical activity column.
Team members will be managed on a per board basis with their name, email address and password. Who opens a board needs to log in.
There are three roles:
- Admins are allowed all functionality
- Members are allowed to move only their tasks
- Readers may only view a board
Boards can be open on several computers at several sites at the same time. Changes made on one computer should be made visible immediately on all others.
Members will be notified of changes. The notification consist of a short description of the change, e.g. “Board ‘Authorization component’: Mary moved task ‘Encrypt password’ to column ‘In Progress’” The notification can be send as an email or some other form of push technology.