jervis-kanban

A full-featured Kanban board component for Vue 2 & Vue 3 with drag-and-drop, swimlanes, and more.
1,210
Install
npm install jervis-kanban
Latest Version:0.0.0-alpha.8
Vue:2 · 3
License:MIT
Last Updated:Jun 30, 2026
Links: npm
Maintainer: keroloszakaria

jervis-kanban

A full-featured Kanban board component library for Vue 2 & Vue 3

npm version

Documentation · Getting Started · API Reference


Zero external dependencies (except vue-demi for cross-version compatibility). Pure CSS styling with 30+ CSS custom properties for full theming control.

Features

Feature Description
Drag & Drop Cards between columns and swimlanes (native HTML5 API)
Columns Add, edit, delete, collapse, reorder, WIP limits
Cards Full CRUD — title, description, labels, assignees, metadata
Swimlanes Horizontal lanes to group cards, collapsible
v-model Two-way binding on the entire board state
Slots Customize every part — card, column title, actions, empty state
RTL Built-in right-to-left support
Theming 30+ CSS custom properties
TypeScript Fully typed API with exported interfaces

Installation

npm install jervis-kanban

Quick Start

Global Plugin

import { createApp } from "vue";
import App from "./App.vue";
import JervisKanban from "jervis-kanban";
import "jervis-kanban/dist/style.css";

createApp(App).use(JervisKanban).mount("#app");

Tree-Shakable Import

<script setup lang="ts">
import { ref } from "vue";
import { KanbanBoard } from "jervis-kanban";
import "jervis-kanban/dist/style.css";
import type { KanbanBoardType } from "jervis-kanban";

const board = ref<KanbanBoardType>({
  columns: [
    { id: "1", title: "To Do", order: 0, color: "#ef4444" },
    { id: "2", title: "In Progress", order: 1, color: "#f59e0b" },
    { id: "3", title: "Done", order: 2, color: "#22c55e" },
  ],
  cards: [
    { id: "c1", title: "Design mockups", columnId: "1", order: 0 },
    {
      id: "c2",
      title: "Build API",
      columnId: "2",
      order: 0,
      labels: [{ id: "l1", text: "Backend", color: "#6366f1" }],
    },
  ],
  swimlanes: [],
});
</script>

<template>
  <KanbanBoard v-model="board" @card-move="handleMove" />
</template>

Full documentation → jervis-kanban

API Overview

Props

Prop Type Default Description
v-model KanbanBoardType {} Board state
canAddColumn boolean true Show add column button
canEditColumn boolean true Allow column editing
canDeleteColumn boolean true Allow column deletion
canAddCard boolean true Show add card button
canEditCard boolean true Allow card editing
canDeleteCard boolean true Allow card deletion
canAddSwimlane boolean true Show add swimlane button
forwardOnly boolean false Restrict cards to forward-only movement
columnTitleKey string "title" Which column field to use as display title

Events

Event Payload
card-click KanbanCard
card-move CardMoveEvent
card-create / card-update / card-delete { cardId, ... }
column-move / column-create / column-update / column-delete { columnId, ... }
swimlane-create / swimlane-update / swimlane-delete { swimlaneId, ... }

Slots

board-header · column-header · add-column · card · column-title · column-actions · add-card · empty · card-form · column-form · swimlane-form

All column slots expose action functions (addCard, editColumn, deleteColumn, toggleCollapse) so you can call any action from any slot.

Form modal slots (card-form, column-form, swimlane-form) let you replace the built-in modals with your own custom forms. They expose isOpen, isEditing, save, and cancel props.

Theming

.my-board {
  --jk-color-bg: #0f172a;
  --jk-color-surface: #1e293b;
  --jk-color-text: #f8fafc;
  --jk-color-primary: #818cf8;
  --jk-column-width: 320px;
}

See full theming guide for all 30+ CSS variables.

License

MIT

Related Packages

@autocode-cli/autocode

AutoCode Dashboard - Issue tracking with web interface

15,582
@lilydesignsystem/vue-kanban-board

Lily Design System Vue 3 headless kanban board (pointer + keyboard-accessible ca...

0 3
@dullar/mercury

Advanced and highly reusable Mobile UI Components built on Vue2 & You can define...

8,553 6
@halobear/vue-upload

vue上传组件

460 1

Version History

Pre-releases (7)
Version Released Vue License
0.0.0-alpha.8 ^2.7.0 || ^3.0.0 MIT
0.0.0-alpha.7 ^2.7.0 || ^3.0.0 MIT
0.0.0-alpha.5 ^2.7.0 || ^3.0.0 MIT
0.0.0-alpha.4 ^2.7.0 || ^3.0.0 MIT
0.0.0-alpha.3 ^2.7.0 || ^3.0.0 MIT