Kanboard

This book demonstrates various uses of the Kanboard software to create kanban boards.

Overview

The Kanboard software is meant to track what tasks are in which state. A good introduction can be found at Kanboard's documentation site.

This software is supposed to give us an overview of the tasks we have at any point in time, the team member who is responsible for each task as it is currently situated, and the requirements for what it will take to complete each task.

There are several key indicators for any task when it gets created:

There are also several option fields that can provide valuable information on a given task:

All of these will be explained in depth in further pages of this book.

Board Scope

A board should be scoped out to only include what makes sense to include on it. There are a couple of guidelines to follow when considering when to make a new board, and what to include on that board:

If the answer to any of these questions is "No", then a new board should be created for the project under consideration.

Workflow

Columns/States

The basic workflow consists of several columns to indicate the state of the task. Typically a task is moved from the left-most column to the right-most column as it progresses through the states. The most basic setup consists of three states:

  1. Todo
  2. Doing
  3. Done

This can be expanded, renamed, and altogether mangled based on the project requirements. A further discussion can be found in the "Initial Configuration" section.

Rows/Swimlanes

These are the horizontal rows in which tasks can be categorized. A good rule of thumb is that tasks that are put into swimlanes on top are in some way more important that tasks that are put into lower swimlanes. While these are not strictly necessary, a basic board should start with at least two swimlanes:

  1. Critical
  2. Everything Else

This serves to highlight the old adage that "If everything is critical, then nothing is critical", and forces the users to a modicum of prioritization right from the start.

 

Initial Configuration

Initial Configuration

Columns and States

The single most important thing to configure are the states of a board, indicated by the columns.

Setup

The setup is done on the "Configure this project" section:

2020-08-09-16-06-39-OurCompose.png

Then, follow the link to the Columns:

2020-08-09-16-08-51-OurCompose.png

Here you can add a new column and/or reorder the existing columns:

2020-08-09-16-11-14-OurCompose-_-Edit-columns.png

You can also change the column names, edit the dashboard visibility, and delete the columns using the gear option next to their names. These are the basic requirements for configuring the columns. 

Configure

The process workflow usually has a superset of the following states, meaning that these are the basic states that most boards contain in one form or another:

  1. Todo
  2. Doing (Work in Progress/WIP)
  3. Done

This is a fine setup in and of itself. However, adding a couple of states makes the workflow much more flexible and robust. The recommended setup for any general board is as follows:

  1. Backlog/Ideas
  2. Planned/Prioritized
  3. In Progress/Doing
  4. Waiting/Follow-Up
  5. Review/Testing
  6. Pending/Time-activated
  7. Done

There are a couple of other default setups that can be used for other applications. For instance, for a CRM/Sales Pipeline:

  1. Backlog
  2. Initial Contact/Offer
  3. Consultation/Requirements Documentation/Negotiation
  4. Development
  5. Demo/Acceptance Testing
  6. Delivery/Invoicing
  7. Closed

Or the original use for it, an Inventory Management system. This system uses two boards, one to track the lifecycle of the inventory, and one to keep track of the stock on-hand.

Order Board:

  1. Order Recieved
  2. Picked, Packaged, Postage'd
  3. Currently Shipping
  4. Delivered

Inventory Stock Board:

  1. Sold
  2. To Order
  3. Waiting
  4. Recv'd

I will go into a detailed explanation of this on another page.

Initial Configuration

References and Relevant Links

Kanbanize - 32 Practical Kanban Board Examples

Initial Configuration

Rows and Swimlanes

Rows - known colloquially as swimlanes - are used to break up the tasks on the board in one of several ways; however makes sense for the particular type of board.

Kanboard User Docs

Setup

Configure this project

2020-08-09-16-06-39-OurCompose.png

Go to the "Swimlanes" section

2020-08-09-16-24-04-Demo-Project.png

Add, delete or edit a swimlane:

2020-08-09-16-26-33-Demo-Project-_-Swimlanes.png

Configuration

There are a couple of rules of thumb when it comes to swimlanes. Use these to indicate priority, with the higher priority towards the top. Don't use these to split up tasks by Assignee - that's what the assignees and filters are for. 

Here is the most basic swimlane setup, from top to bottom:

  1. Critical
  2. Everything Else

Here is a bit more granular setup with four swimlanes that breaks repetative work into a "Maintenance" swimlane, and splits up "nice to have's" into a column called "Improvements", and bugs/issues/problems into another swimlane called "Incidents".

  1. Critical
  2. Incidents
  3. Maintenance
  4. Improvements

Similarly to the most basic setup, you can categorize your swimlanes by visibility:

  1. External Projects
  2. Internal Projects

This setup is intended to be worked from top to bottom, with tasks moving from the last column of the higher swimlane into the first column of the lower swimlane:

  1. Onboarding
  2. Initial Review
  3. Ongoing Touchbases

Swimlanes are the most efficient way to categorize tasks on a board according to priority or type of task, but I would caution against using them to indicate things that other aspects of the task are meant to indicate (See: Categories, Due Dates, etc.)

Deployment Configuration

There is not much to configure when deploying Kanboard.

A couple things that are thinking of being implemented in the future:

Application Interface

There are a couple of major interfaces that a necessary to operate Kanboard.

Application Interface

Dashboard

2020-12-05-21-28-05-Dashboard-for-AndrewCz.png

This is your "homepage". It can be configured differently, but by default, it has the list of your projects, and the tasks that are assigned to you in those projects.

Tasks

The tasks that are listed are configured based on the board that they are on. These are usually the tasks that are In Progress or otherwise waiting on you to do something with.

These tasks should be ones that you can jump in and work on anytime; they should not be waiting on anything.

The tasks have details that are roughly equivalent to what is displayed on the Task Card Detail on the board itself.

Application Interface

Main Board View

qMn2020-12-03-00-33-30-OurCompose.png

Columns

Columns are the vertical representation of the state of the task.

Collapsed Columns

Columns can be collapsed by clicking on the drop down arrow by their names.

Swimlanes

Swimlanes are the horizontal representation of the priority and/or logical grouping of the task.

Collapsed Swimlanes

Click on the "Up" arrow by the name of the swimlane to collapse it.

Tasks

Each task is represented by a task card on the board. There are a lot of things represented on a single task card:

2020-12-05-21-02-50-OurCompose.png

  1. Number
  2. Title
  3. Assignee
  4. Category
  5. Due Date
  6. Complexity
  7. Comments
  8. Subtasks
  9. Reoccurrance
  10. Duration since created/Duration in column
  11. Priority

Note that most of these are clickable, and will bring up their respective information without having to go into the task detail to manipulate it.

Application Interface

New Task Prompt

2020-12-03-00-30-43-OurCompose.png

This view will pop up every time you go to create a task. Everything can be changed after the task is created, so don't worry! Nothing is permanent. Also, the only thing that is REQUIRED is the title of the task. The rest of it can be filled in later if necessary.

You will also see this screen every time you to to edit a task, so if it looks familiar, that's because it is!

Setting Expectations

The description should answer three questions. And it's OK to steal this template and format the descriptions of your task exactly like this!!!

Application Interface

Task Detail Page

2020-12-03-00-34-40-OurCompose-1383---Show-Notes.png

This is the page that I have up whenever I'm working on the task itself. This will give me access to all of my notes, links, and any other details about the task that I have collected so far.

There are a couple of features on the left-hand side column that I use often:

Edit the task

This allows you to edit any of the details like:

Add a sub-task

This allows me to create one or more sub-tasks all at once.

This allows me to add links to pages on the internet on other websites much like a bookmark just for this specific task.

Add a comment

This is how I start off creating my first comment. However, after there is already one comment on the task, you can just scroll to the bottom to add another comment underneath the last one.

Move position

This allows me to change the swimlane or the column of the task without having to go all the way back to the main board page.

Application Interface

Mobile

I want to make a point about mobile:

 Only use mobile to work on a specific task; do not use it as your resource to organize your board. It is unfit to do so.

This isn't just a rip on the software, any type of board system is meant to be managed with a significant amount of space to work with, and requires enough viewing area to make out the details that are crammed into each task card, and the flexibility that a point-click-drag system can afford. You can use the interface to navigate around a project board, but I would not recommend using it as your primary means to curating the overall board.

When using mobile, you are best served by keeping to your dashboard and specific task cards themselves.

Everyday Usage

Everyday Usage

Assignee/State Workflow

The assignee of a task is the person who is responsible for the task at the point it is at currently. While there are several states that a task can be at, there is only (in all reality) one person who is responsible for moving that task out of where it currently is.

The state of a task is the part of the process that the task is currently in. See the Initial Customization chapter for more details on its setup.

Examples

Function needs to be coded

BRAD is coding this function - ASSIGNEE: BRAD, STATE: WIP

This task is assigned to BRAD. That means that BRAD is currently (or presently going to be) writing the code to accomplish X. Now, maybe BRAD is in charge of writing the code, but his manager needs to verify that his code works. That's fine. However, as long as BRAD is working on the code, it will be assigned to BRAD. As soon as that code is ready to be reviewed, we move on to a different state.

BRAD is done coding this function - ASSIGNEE: BRAD's Manager, STATE: REVIEW

When BRAD is done coding up and testing this function, he moves this to "Review", and assigns this task to his manger. This means that it's time for his manager to review this function. At this point, his manager may move this task back into WIP if he thinks it needs more work, and reassign it to BRAD, or move it into DONE if this task is done to his satisfaction, and is production-ready.

Sales copy needs to be written

KEVIN is writing the sales copy - ASSIGNEE: KEVIN, STATE: WIP

Kevin needs to write a sales copy. He sits down at his desk and pounds out a good letter that he thinks will inspire his readers to buy his company's product.

KEVIN's Manager Reviews his Sales Copy - ASSIGNEE: KEVIN's Manager, STATE: REVIEW

At this point, Kevin's Manager reviews the copy that Kevin has written. However, he doesn't think that the sales copy is good enough to produce and send to outside sources. So he makes corrective notes for KEVIN to fix before he sends it out. These notes are put in the Task's comments; the tasks is re-assigned to KEVIN, and put back into WIP/Planned.

KEVIN re-writes the Sales Copy - ASSIGNEE: KEVIN, STATE: WIP

KEVIN goes back and makes the changes based on his Manager's review.

KEVIN's Manager Approves his Sales Copy - Assignee: Kevin's Manager, STATE: REVIEW

The task is in review again, but this time KEVIN's manager approves his sales copy. At this point he passes it off to whatever process is after the writing and review stage, which is outside of his control. However, he is the ultimate source of review of the sales copy that proceeds from his department.

Everyday Usage

Project Scope

Teams

Projects can mean multiple things to multiple people. For us at OurCompose, we divide our projects into two broad scopes, development and sales. This way we are able to put all of our tasks under one of the two buckets or projects. This allows us to know the context we operate in when completing a task. The scope of any project isn't limited. There is no cookie cutter for defining a project. The two boards for us have a very broad scope. They have swimlanes that reduce scope and determine criticality, but other than that - we have the two boards. At OurCompose we use categories defined within tasks very well. I would say that is how we are able to get away with such broad projects.

Within our board at OurCompose we use comments extensively. These are helpful for warm handing off tasks to other team members, and for when reviews need to be completed. Comments are able to be written to both determine when and where to move forward.

Personal Use

As a personal user of kanboard, I like having multiple projects and reducing scope down on a project basis instead of using categories and tags. It helps me immediately understand what context I need to be in to start working on the task. As an example of these different projects, I have Music, Homelab, AI, and Meta. Under these different projects I have different swimlanes breaking down scope even further. Taking my music board I have, I have a Default Swimlane, a Songs Swimlane and a Theory Swimlane. This allows me to immediately understand what I am going to take away from the task or what "I" am looking for to complete the task. The task I have defined in the song would be simply "Song Name" - I don't add a crazy description, maybe a link to the song, and a tag for the instrument, "Guitar" or "Keyboard."

Going off the Personal board example, I generally use very light titles, descriptions, and comments. I would almost go so far to say I use most tasks as place holders so I don't forget when I come back to these items in the future.

With the personal instance and multiple boards, I would highly highly recommend starting with one board to get a feel of everything going on using tags and categories first. It is easy to get lost in multiple projects and easy to move complex tasks over underestimating complexity. When you move to multiple projects, the dashboard view provides a great overview of what tasks are currently in progress and currently in planned.

Everyday Usage

Search

Kanboard uses a simple query language for advanced search.

The documentation below will show some of our most regularly used searches and what we find useful. Getting started right off the bat, Kanboard provides a list of useful filters to use. These can be found using the filter button next to the search page as seen in the screenshot below:

image-1613933321711.png

 

To jump into search here, we have the search open tasks by Assignee. This allows me to filter all open tasks for a specific user. The status checks the status of the task to prevent showing old or stale tasks on the board. Kanboard also provides the ability to search for your own assigned tasks using the Assignee:me filter. When I am feeling lazy, I end up using the manual search over the filter by me (this is more due to personal preference as both work). Either option works for filtering tasks assigned to yourself.

image-1613933093634.png

 

The other main search I use is searching  by tag - Searching by tag allows me to filter broader themes while looking at tasks. Filtering by tasks allows me to understand the content I need to complete around a specific group of tasks. In the example below I am looking at all open tasks tagged "Content Marketing"

image-1613933901636.png

 

The last major filter we use on our board is around complexity to ensure all tasks are complexitized and accounted for properly. We find all open tasks without a complexity to ensure they are properly marked, and this also helps us measure our workload over the next two week period. Below is an example of searching for tasks that don't have a complexity.

image-1613934116912.png

 

 

User Management

User Management

Users

For information on groups and users - check out the upstream project documentation

Getting Started

Up and running you are going to be logging in with Admin/Admin with a vanilla instance of Kanboard. At OurCompose you will use your username and password you used to sign up to CommandCenter with.

image-1611006158693.png

Adding a User

image-1611006390083.png

image-1611006352331.png

Managing Groups

In Kanboard, each user can be a member of one or many groups. A group is like a team or an organization.

Only administrators can create new groups and assign users.

Groups can be managed from User management > View All Groups. From there, you can create groups and assign users.

 

Advanced Customization

Advanced Customization

Dashboard/Board View Customization

Board Customization

image-1612134284407.png

Custom Filters

Searches that you can share among the team. They look just like regular filters that you can share with the rest of the board:

image-1612134555252.png

image-1612134594511.png

Predefined Content

These are templates that can be used for tasks to give a pre-defined title and description. These are best for when a certain type of task has various sections that need to be defined.

image-1612136388720.png

The title will be the name of the predefined content, and it is available underneath the description of any new task.

Dashboard

Tasks are shown on the dashboard based on which column they're in on their respective boards. Columns can choose to be either "Visible on the Dashboard" or not:

image-1612151988288.png

Sort Tasks in the Dashboard:

image-1612153248395.png

Note that any changes to this survives a refresh, because the parameter is in the URL. If the page is opened up in another tab/window/etc. without the parameter, it will default back to Priority.

Advanced Customization

Reoccurring Tasks and Automated Actions

Laundry. Team Meetings. Workouts. All of these things (and more) happen over and over again on a predictable schedule, and unlike habits (like drinking enough water every day) it is preferable to get reminders about these types of things. But I don't want them to clutter up my board until it's time to do them. So, no what?

Reoccurring Tasks

https://docs.kanboard.org/en/latest/user_guide/tasks.html#recurring-tasks 

image-1609908272514.png

On every task detail page, you can choose to edit the reoccurrance:

image-1609908345574.png

Trigger

90% of the time this is going to be when the task is moved to the last column.

Factor and Timeframe

Get used to calculating weeks in double-digit numbers. The only options here are:

But they work perfectly.

PROTIP: If you need something to repeat on an odd cadence, find the cycle that the task repeats at, and make one that reoccurs at that interval at each of the start dates in between the first and the last occurrence.

For instance:

The cycle here is "Week 1: Monday" to "Week 3: Monday". There would be three start dates: "Week 1: Monday", "Week 1: Friday", "Week 2: Wednesday". They would all have a recurrence of two weeks. This way I get tasks for the "A" type on all of the "A" days, which are indistinguishable to me, but under the hood there are three tasks that are in constant rotation.

Base Date

  1. If it's laundry or garbage and the time it needs to get done is based on when it was last done, calculate the due date from when it's moved to the last column
  2. Otherwise, if it's a scheduled meeting or workout, keep the date pegged by calculating from the existing due date

Automated Actions

This could be a potentially large section, so I'm going to point back to the official documentation and give some ideas for what we've been able to setup to make our own lives easier ourselves.

https://docs.kanboard.org/en/latest/user_guide/automatic_actions.html

As you will see here, most of these are actually driven and constrained by culture and process requirements. This (of course) means that these will differ widely in each specific implementation, and should be taken only as guidelines.

All Tasks in a specific Swimlane are the same color and priority

By using a mix of assigning a priority and assigning a color during task creation and moving tasks to another swimlane, we get to have all of the tasks in our swimlanes the same color and priority, whether it's a new task, or one that got moved.

All Recurring Tasks are moved out of the Backlog to Pending until their Due Date, then are put into WIP

Since moving columns specify source and destination columns, we can target all tasks in the Backlog column to be put into Pending if they have a due date within 14 days. This means that all tasks without a due date are not touched. (All of our recurring tasks have due dates).

Then, on day before the due date of tasks that are in Planned OR Pending, they are moved to WIP (the column that is represented on the dashboard).

Tasks in the Done column stay open for 20 days and then Close themselves

The "Close Task" automated action is easy enough to set, you just have to know what to do with it. For us, we let tasks hang out in the Done column for 20 days, and then have them close themselves. This is because we don't want them cluttering up our Done column after they've become irrelevant. Since we have review meetings every 2 weeks, this gives us that timeframe plus a little leeway in case we get delayed. Also, the default search ignores all closed tasks, so we don't see them once that happens.

Advanced Customization

Analytics

Advanced Customization

Plugins

https://kanboard.org/plugins.html - Plugins Link

There is no approval process and code review. This is up to you to validate the compatibility of these plugins with your Kanboard instance.

Kanboard comes out of the box as a very basic kanban implementation. It's plugins allow for both greater flexibility and usability of the tool as a whole. I have broken down the plugins into the following categories: functionality, webhooks and communication, authentication, and themes. Please checkout the link of plugins above for the full list.

Getting to Plugins:

Top right - click on your profile to get to the drop down and click plugins:

image-1611007015712.png

Functionality

The favorite functionality related tools we have and use on the OurCompose Board include the SubtaskDueDate and Group Assign. The other functionality related plugins out there I found interesting included third party storage and plugins around collecting more metadata.

SubtaskDueDate allows us to assign due dates to subtasks - This is useful for longer running tasks where subtasks end up turning into smaller less complex, but still important tasks that need to be tracked.

image-1611004777041.png

The Group_assign plugin allows multiple assignees to be assigned to a single task.

image-1611004827595.png

Webhooks & Communication

At OurCompose we don't use webhooks and communication related plugins for the board, however there are quite a few plugins that are worth mentioning: Matrix, Hipchat, RocketChat, Telegram, SynologyChat, etc. The list for these goes on and on. Along with these communication related plugins, there are webhook plugins for talking with git based hosting providers. This list includes making webhook calls for BitBucket, Gittea, Gitlab, Github, and Gogs.

We looked into implementing Gitlab webhooks with Kanboard, but the hassle was much more than the reward. We are still looking into this to track issues and automatically closing tasks based off of where tasks are in the board, but right now internally managing tasks has worked well for us.

Authentication

The list of plugins for authentication include: CAS, Github, Gitlab, Google, IMAP, Reverse Proxy. Kanboard also has a two factor plugin for SMS two factor authentication, securing down the board. We use regular kanboard user and group management, but these provide centralized management from an authentication provider.

Themes

How could I not mention themes when talking about kanboard plugins. Kanboard by default is not the prettiest board software on the market. With its white background and cards I really can say I don't care for the default theme. Good news is that there are a few really good themes out there and even a full on customizer theme for taking care of the view of the board. I would highly recommend nebula, moon and essential! These were three of my favorites that are out there. With the ability to use the Customizer plugin to trick out everything, adding logos and default images for the background can really make your board your own.

Integration Session: https://youtu.be/ntq4E0adFg8 

Troubleshooting

Upstream Project

Upstream Project

Links

Official Site: https://kanboard.org/

Code: https://github.com/kanboard/

Documentation: https://docs.kanboard.org/en/latest/

Updates: https://github.com/kanboard/kanboard/releases

Community: https://kanboard.discourse.group/

Container Image: https://hub.docker.com/r/kanboard/kanboard/