Skip to main content

Kanban

Fully featured Kanban board. Drag items between columns and use the inspector to update items and columns.
Vanilla JS
React
Angular
Vue
Svelte
Typescript
JsPlumb, leading alternative to GoJS, JointJS and ReactFlow

The source code for this demo is available on Github.

Vanilla JS
Angular
React
https://github.com/jsplumb-demonstrations/kanban

If you haven't got a license for JsPlumb, we offer 30 day evaluations.

Start a free trial

What is a Kanban board and how can I build one with JsPlumb?

What is a Kanban board?

A kanban board is a physical or digital project management tool designed to help visualize work, limit work-in-progress, and maximize efficiency.

What are the parts of a Kanban board?

The main components of a Kanban board are columns and cards. A column represents a specific activity that forms part of a workflow - one very common example being a workflow that consists of Todo, In Progress and Done columns.

Each column contains zero or more cards, and each card represents some specific unit of work. The exact details of the unit of work vary depending on the context in which the Kanban board is being used. For instance, a software development team may use a Kanban board to track issues related to some project, and each card represents one issue. Or perhaps the design team use a Kanban to manage the development of their user stories.

How to work this demonstration
  • Cards can be dragged inside a column to reorder them
  • Cards can be dragged to other columns
  • Enter some text in the `Add Item` textfield and press enter to add a new card to a column
  • Enter some text in the `Add Column` field and press enter to add a new column
  • Click on a card to edit it in the inspector on the right hand side
  • Click on the pencil icon of a column to edit it in the inspector on the right hand side.

Angular Kanban boards

JsPlumb's deep Angular integration makes building an Angular Kanban very simple. The Kanban builder starter app uses our ControlsComponent, SurfaceComponent, MiniviewComponent and Angular service to provide a fully featured Network Topology Diagram. Tested with Angular 16, 17, 18 and 19.


import { Component } from "@angular/core"
import { VertexDrawingPlugin } from "@jsplumbtoolkit/browser-ui"

@Component({
template:`
<div class="my-network-topology">
<div class="canvas">
<jsplumb-surface [view]='viewOptions'></jsplumb-surface>
<jsplumb-controls></jsplumb-controls>
</div>
</div>`
})
export class MyComponent {

viewOptions = {
...
}

renderOptions = {
...
}
}


React Kanban

React Kanban boards with JsPlumb are a snap. Our Kanban builder uses JsPlumb's advanced React integration with its providers and support for functional components, to give you a solid foundation on which to base your app. Tested with React 16, 17, 18 and 19.


import React from "react"
import { SurfaceProvider,
SurfaceComponent, ControlsComponent,
MiniviewComponent} from "@jsplumbtoolkit/browser-ui-react"

export default function MyKanban() {

view = {
...
}

renderOptions = {
...
}

return <div className="jtk-demo-canvas">
<SurfaceProvider>
<SurfaceComponent
renderOptions={renderOptions}
viewOptions={view}>
<ControlsComponent/>
<MiniviewComponent/>
</SurfaceComponent>

</SurfaceProvider>
</div>
}

Typescript Kanban

JsPlumb is written in Typescript and ships with a full set of type definitions, for a seamless Typescript development experience.

JsPlumb's Surface component is the heart of the Kanban builder, and JsPlumb ships a large number of useful helper components such as the Miniview, the Controls component for managing zoom, undo/redo etc, which lets you easily configure drag/drop of new elements, plus a long list of plugins.

Our Typescript Kanban builder starter app provides you with everything you need to get a solid start, and is easily extensible.

<div id="network-topology-wrapper">
<div id="canvas">
<div id="controls"></div>
</div>
<div id="palette"></div>
</div>

import { newInstance,
ControlsComponent } from "@jsplumbtoolkit/browser-ui"

export class MyKanban() {

constructor() {

const toolkit = newInstance()
const surface = toolkit.render(document.querySelector("#canvas"), {
view:{
nodes:{
default:{
template:`<div data-jtk-target="true"></div>`
}
}
}
})

new ControlsComponent(document.querySelector("#controls"), surface)



}


}

Vue Kanban

It's easy to build a Vue Kanban with JsPlumb - we've done most of the hard work for you in our Vue Kanban builder starter app

Our Vue Kanban takes advantage of JsPlumb's ability to integrate deeply with Vue, using Vue components to render nodes, and several of JsPlumb's Vue helper components and plugins such as the ControlsComponent, MiniviewComponent.


<script>
import { defineComponent } from "vue";
import { loadSurface, DEFAULT_VUE_SURFACE_ID } from "@jsplumbtoolkit/browser-ui-vue3"

let surface
let toolkit

export default defineComponent({
name:"kanban",
mounted() {
loadSurface(DEFAULT_VUE_SURFACE_ID, (s) => {
surface = s;
toolkit = surface.toolkitInstance;
})
},
methods:{
viewParams:function() {
return {
nodes:{
default:{
component:NodeComponent
}
}
}
},
renderParams:function() {
return {
// set the size of elements from the width/height values in their backing data
useModelForSizes:true,
// on load, zoom the dataset so its all visible
zoomToFit:true
}
}
}

</script>
<template>
<div id="app">
<div class="jtk-demo-canvas">
<SurfaceComponent :renderOptions="this.renderParams()"
:viewOptions="this.viewParams()"
url="mindmap.json">
</SurfaceComponent>

<ControlsComponent/>
<MiniviewComponent/>
</div>
</div>
</template>

Svelte Kanban

JsPlumb's Svelte integration has everything you need to quickly build a Svelte Kanban, and what's great is we've already pulled it all together for you in our Svelte Kanban builder starter app

Our Svelte Kanban uses several of JsPlumb's Svelte components, including the SurfaceComponent, ControlsComponent and MiniviewComponent


<script>

const view = {
nodes:{
[DEFAULT]:{
component:NodeComponent
}
}
}

const renderOptions = {
// set the size of elements from the width/height values in their backing data
useModelForSizes:true,
// on load, zoom the dataset so its all visible
zoomToFit:true
}


</script>
<div>
<SurfaceProvider>

<SurfaceComponent renderOptions={renderOptions}
viewOptions={view}
className="jtk-demo-canvas"
url="/dataset.json">

<ControlsComponent/>
<MiniviewComponent/>
</SurfaceComponent>



</SurfaceProvider>
</div>
More Demos
See all demos

Flowchart builder application - JsPlumb, industry standard diagramming and rich visual UI Javascript library

Flowchart

Gantt chart builder application - JsPlumb - Angular, React, Vue, Svelte diagramming library

Gantt

Chatbot builder application - JsPlumb, build diagrams and rich visual UIs fast

Chatbot

Callflow builder application - JsPlumb, build diagrams and rich visual UIs fast

Call Flow

Kanban application - JsPlumb - JavaScript and Typescript diagramming library that fuels exceptional UIs

Kanban

Network topology diagram builder - JsPlumb - When you've reached the limit with ReactFlow, we can help!

Network Topology

Database schema builder application - JsPlumb - Angular, React, Vue, Svelte diagramming library

Database Schema

Org Chart application - JsPlumb - JavaScript and Typescript diagramming library that fuels exceptional UIs

Org Chart

Mindmap builder application - JsPlumb - When you've reached the limit with ReactFlow, we can help!

Mindmap

Element grouping demonstration - JsPlumb - When you've reached the limit with ReactFlow, we can help!

Nested Groups

Path tracing demonstration - JsPlumb - Angular, React, Vue, Svelte diagramming library

Path Tracing

Hello world demonstration - JsPlumb, build diagrams and rich visual UIs fast

Hello World

Image processor application - JsPlumb - When you've reached the limit with ReactFlow, we can help!

Image Processor

Neighbour views dynamic selections demonstration - JsPlumb, build diagrams and rich visual UIs fast

Neighbourhood Views

Active filtering demonstration - JsPlumb - Angular, React, Vue, Svelte diagramming library

Active Filtering

Org chart layout demonstration - JsPlumb, flowcharts, chatbots, bar charts, decision trees, mindmaps, org charts, gantt charts and more

Hierarchy Layout

CAD Drawing tools demonstration - JsPlumb, build diagrams and rich visual UIs fast

Connector Editors

Force directed layout demonstration, org chart layout demonstration - JsPlumb - JavaScript and Typescript diagramming library that fuels exceptional UIs

Layouts

Collapsible hierarchy Italic language family demonstration - JsPlumb, industry standard diagramming and rich visual UI Javascript library

Collapsible Hierarchy

Nested instances desktop example - JsPlumb, leading alternative to GoJS, JointJS and ReactFlow

Nested Instances