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.
Variation #1
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.