Skip to content

fulsomenko/kanban

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

284 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Kanban

Crates.io License

A fast, keyboard-driven kanban tool

Kanban Demo

Inspired by: lazygit

Made possible by: ratatui

Features

🎯 Core

  • Board Management: Create, edit, and organize multiple boards
  • Custom Columns: Define your own columns to match your workflow (e.g., Todo, In Progress, Blocked, Done)
  • Rich Cards: Cards with metadata including priority, story points, due dates, and more
  • Card Dependencies: Parent-child and blocking relationships between cards
  • Keyboard-Driven: Vim-like navigation with hjkl and context-aware shortcuts

πŸš€ Productivity

  • Search: Find cards instantly with vim-style / search
  • Undo / Redo: Undo (u) and redo (U) any action
  • Multiple Views: Switch between flat list, grouped by column, or kanban board layout with V
  • External Editor: Edit in your preferred editor (emacs, nano, vim, etc.)

πŸ“Š Organization

  • Sprint Planning: Plan, start and complete sprints
  • Story Points: Assign 1-5 point estimates with color-coded display
  • Sorting: Sort cards by points, priority, date, status, or position
  • Filtering: Filter by sprint, status, or search results
  • Card Archiving: Archive and restore tasks
  • Metadata: Organize with due dates, priority levels, and timestamps

Installation

From crates.io

cargo install kanban-cli
kanban

From Source

git clone https://github.com/fulsomenko/kanban
cd kanban
cargo install --path crates/kanban-cli

Using Nix

nix run github:fulsomenko/kanban

Linux Clipboard Support

For clipboard operations (y/Y to copy branch names) to persist after exiting, you need a clipboard manager running:

  • Wayland: wl-clip-persist, cliphist, clipman, or your DE's built-in manager
  • X11: Most desktop environments include one by default

Without a clipboard manager, copied content is lost when the app exits (this is a Linux platform limitation, not a bug).

Quick Start

TUI

kanban                 # Launch the app
kanban myboard.json    # Load a board from file

First time?

  1. Press n to create a new board
  2. Press Enter to activate it
  3. Add cards with n and organize them
  4. Press x to export as JSON

MCP Server

nix run github:fulsomenko/kanban#kanban-mcp

Provides full read/write access to your boards, cards, columns, and sprints over the Model Context Protocol for use with LLM tools like Claude Code, Cursor, etc.

CLI

export KANBAN_FILE=myboard.json   # Set data file

# Boards
kanban board list
kanban board create --name "My Project"

# Cards
kanban card list --board-id <ID>
kanban card create --board-id <ID> --column-id <ID> --title "New task"
kanban card update <CARD_ID> --status done --priority high

# Sprints
kanban sprint create --board-id <ID>
kanban sprint activate <SPRINT_ID>
kanban card assign-sprint <CARD_ID> --sprint-id <SPRINT_ID>

All commands output JSON. See kanban --help for full reference.

Multiple Views

Switch between view modes with V:

  • Flat List: See all cards in a simple list with details
  • Grouped by Column: Cards organized under their respective columns
  • Kanban Board: Classic columnar board layout for visual workflow

Usage

Tip: Press ? at any time to view the help menu with all available bindings for your current context.

Navigation

  • j/k - Up/down, h/l - Previous/next column
  • Enter - Open card

Card list

  • n - New card, e - Edit, r - Rename
  • d - Archive, c - Toggle done, p - Set priority
  • v - Toggle selection mode, Ctrl+a - Select all

Views & Search

  • V - Toggle view mode, / - Search
  • t - Sprint filter, D - Archived cards

Undo & Other

  • u - Undo, U - Redo
  • y - Copy to clipboard, H/L - Move card left/right, q - Quit

Architecture

Built with Rust for speed and reliability:

crates/
β”œβ”€β”€ kanban-core        β†’ Shared traits, error handling & reusable state primitives
β”œβ”€β”€ kanban-domain      β†’ Domain models, business logic, filtering & sorting
β”œβ”€β”€ kanban-persistence β†’ JSON storage, versioning & migrations
β”œβ”€β”€ kanban-tui         β†’ Terminal UI with ratatui
β”œβ”€β”€ kanban-cli         β†’ CLI entry point
└── kanban-mcp         β†’ Model Context Protocol server for LLM integration

Key Design Patterns:

  • Command Pattern: All mutations flow through domain commands for persistent tracking
  • Immediate Saving: Changes auto-save after each action
  • Format Versioning: Automatic V1β†’V2 migration with backup on first load
  • Multi-Instance Support: Last-write-wins conflict resolution for concurrent edits

Data & Persistence

  • Format: JSON-based import/export
  • Automatic Migration: V1 data files are automatically upgraded to V2 format on load with backup creation
  • Multi-Instance Support:
    • Real-time file watching detects changes from other running instances
    • Automatic reload when no local changes exist
    • User prompt when local edits conflict with external changes
    • Last-write-wins conflict resolution for concurrent edits
  • Atomic Writes: Crash-safe write pattern (temp file β†’ atomic rename) prevents data corruption
  • External Editor: Automatically detects vim, nvim, nano, or your $EDITOR for editing descriptions
  • Rich Metadata: Timestamps, priority levels, story points, custom tags
  • Bounded Save Queue: Maintains a queue of up to 100 pending snapshots

Roadmap

  • Progressive auto-save (save changes to board as you make them, not just on exit)
  • Full CLI interface matching TUI operations (scriptable kanban commands)
  • Card dependencies
  • Configurable keybindings
  • Audit log
  • Multiple storage backends (.md archive, SQL, MongoDB) with pluggable architecture
  • HTTP API for remote board access and programmatic control
  • Collaborative features (multi-user, sync)

Contributing

See CONTRIBUTING.md for development workflow, code style, and testing guidelines.

License

Apache 2.0 - See LICENSE.md for details