The purpose of this application is to provide a framework for a simple kanban system. This will allow you to define "kanban loops" consisting of any number of bins/cards to create a replenishment relationship between customer entities and supplier entities.

Video Overview

How it Works

This is a very simple example of a kanban system and does not handle kanban card accumulation or dynamically changing kanban cards as configuration changes due to demand or lead time. The user (planner, usually) will configure their supermarket by defining the following parameters for each part in the supermarket.

  • Item / Part Number: This is the name of the part, the SKU

  • Department: This is the department that is considered the "customer" or the workcenter consuming the item

  • Supplier: This is the workcenter or entity responsible for producing the item once it is depleted

  • Location: This is the physical location where the item is stored for consumption. Usually this is a line-side or supermarket location. Items should be stored in bins or containers that match the number of cards within the loop

  • Daily Usage: This is used to calculate the number of cards or QTY of each container. This may change over time and will require a reconfiguration of the kanban loop. This is expressed in days.

  • Safety Stock: This is the amount of excess stock held to ensure that there is no stock out. Typically, safety stock is increased for any number of reasons including but not limited to - Variations in demand, variations in lead time, or whether or not you want to hold excess stock due to the relative cost of the materials (an "ABC" analysis may reveal that it might not be in your best interest to order some "C" parts as often)

  • Lead time: This is the actual lead time from bin emptied to bin replenished. Kaizen should be practiced to reduce this where applicable.

  • QTY: The amount of the item present in each bin / card

A supermarket terminal is included and it is advised that this be set up as a touch screen with a barcode scanner at your supermarket. This will allow users to very easily scan a barcode / label with the Kanban Card ID ("KB1-1" for example) and either empty or fill the bin, depending on whether or not they are receiving material or finishing a container.

Alternatively, you could use the "request material" and "receive material" screens to perform the same task while displaying some extra information.

Once the card is used to request material, an order is created in the "Material Requests" table, where the Supplier is able to view and adjust statuses of the requests, marking them "in progress" or in a "delivery" state. Only the supermarket location can receive the material.

Each transaction is used to calculate actual lead time, further improving the accuracy of kanban loops into the future and providing a baseline for improvement.

Cards may be individually deactivated, preventing them from being ordered in the future. This is a very quick way of reducing the quantity of materials within your loop if demand or lead time should decrease suddenly.


The kanban board portion of this application relies on a number of analytics in order to function. These will not be downloaded along with the application, however the tables and their structures will. You will need to create these 4 analytics (or choose ones of your own!). For each analytic, click on the "select from existing" button.

Below are the settings for the analytics.

Past Due and All Open


count(@*Kanban Configuration Empty Cards  = @*Kanban Configuration Cards )

On time delivery trend

x-axis expression:

format_date_tz(date_trunc_tz(@*Material Requests Completed , 'day', 'America/new_york'), 'MM/DD/YY', 'America/New_york')

y-axis expression:

(count(@*Material Requests Delivered on time  = texttoboolean('y')) / count()) * 100

Stockout list



Did this answer your question?