Documentation Index Fetch the complete documentation index at: https://mintlify.com/fulsomenko/kanban/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Boards are the top-level organizational unit in Kanban CLI. Each board contains columns that represent stages in your workflow, and cards flow through these columns as work progresses.
Board Structure
A board is defined by the Board struct with the following key fields:
pub struct Board {
pub id : BoardId , // Unique identifier (UUID)
pub name : String , // Board name
pub description : Option < String >,
pub created_at : DateTime < Utc >,
pub updated_at : DateTime < Utc >,
// Sprint configuration
pub sprint_prefix : Option < String >,
pub card_prefix : Option < String >,
pub sprint_duration_days : Option < u32 >,
pub active_sprint_id : Option < Uuid >,
// Sorting and view preferences
pub task_sort_field : SortField ,
pub task_sort_order : SortOrder ,
pub task_list_view : TaskListView ,
// Counters for card and sprint numbering
pub prefix_counters : HashMap < String , u32 >,
pub sprint_counters : HashMap < String , u32 >,
// Completion tracking
pub completion_column_id : Option < Uuid >,
}
card_prefix: Default prefix for card identifiers (e.g., “task” → task-1, task-2)
sprint_prefix: Default prefix for sprint identifiers (e.g., “sprint” → sprint-1)
Both can be customized per board and overridden at sprint or card level
Boards maintain separate counter sequences for different prefixes: // Get next card number for a prefix
let number = board . get_next_card_number ( "feat" );
// Returns 1 on first call, 2 on second, etc.
// Multiple prefixes maintain independent sequences
board . get_next_card_number ( "bug" ); // Returns 1
board . get_next_card_number ( "feat" ); // Returns 2
This allows you to use different prefixes (bug, feat, task) with independent numbering.
Cards can be sorted by various fields: pub enum SortField {
Points , // Story points
Priority , // Low, Medium, High, Critical
CreatedAt , // Creation timestamp
UpdatedAt , // Last modified
Status , // Todo, InProgress, Blocked, Done
Position , // Manual ordering
Default , // Default sort order
}
pub enum SortOrder {
Ascending ,
Descending ,
}
Column Structure
Columns represent workflow stages and contain the following fields:
pub struct Column {
pub id : ColumnId ,
pub board_id : BoardId ,
pub name : String ,
pub position : i32 , // Display order
pub wip_limit : Option < i32 >, // Work-in-progress limit
pub created_at : DateTime < Utc >,
pub updated_at : DateTime < Utc >,
}
WIP Limits
Work-in-progress (WIP) limits help prevent bottlenecks by restricting how many cards can be in a column:
let mut column = Column :: new ( board_id , "In Progress" . to_string (), 1 );
column . set_wip_limit ( Some ( 3 )); // Limit to 3 cards
WIP limits are optional. Set to None for unlimited capacity.
Custom Columns
Unlike rigid Kanban tools, you can define any columns that match your workflow:
Classic Development
Bug Tracking
Research
"Backlog" → "Todo" → "In Progress" → "Review" → "Done"
Board Management Operations
Creating a Board
let board = Board :: new (
"My Project" . to_string (),
Some ( "Project description" . to_string ())
);
Updating Board Settings
// Update name and description
board . update_name ( "New Name" . to_string ());
board . update_description ( Some ( "New description" . to_string ()));
// Configure prefixes
board . update_card_prefix ( Some ( "feat" . to_string ()));
board . update_sprint_prefix ( Some ( "sprint" . to_string ()));
// Set task sorting
board . update_task_sort ( SortField :: Priority , SortOrder :: Descending );
Partial Updates
For updating multiple fields atomically:
let updates = BoardUpdate {
name : Some ( "Updated Board" . to_string ()),
card_prefix : FieldUpdate :: Set ( "task" . to_string ()),
sprint_duration_days : FieldUpdate :: Set ( 14 ),
.. Default :: default ()
};
board . update ( updates );
Managing Columns
// Create columns
let mut col1 = Column :: new ( board . id, "Todo" . to_string (), 0 );
let mut col2 = Column :: new ( board . id, "Done" . to_string (), 1 );
// Set WIP limit
col1 . set_wip_limit ( Some ( 5 ));
// Update column name
col2 . update_name ( "Completed" . to_string ());
// Reorder columns
col1 . update_position ( 1 );
col2 . update_position ( 0 );
Completion Column
Boards can designate a completion column where cards are automatically marked as Done:
// Set explicit completion column
board . update_completion_column_id ( Some ( done_column_id ));
// Resolve completion column (explicit or fallback to last)
let columns = vec! [ todo_col , in_progress_col , done_col ];
let completion_id = board . resolve_completion_column ( & columns );
If no completion column is explicitly set, the last column by position is used as the default.
Task List Views
Boards support multiple view modes for displaying cards:
pub enum TaskListView {
Flat , // Simple list of all cards
GroupedByColumn , // Cards grouped under column headers
Kanban , // Classic kanban board layout
}
board . update_task_list_view ( TaskListView :: Kanban );
Cards Learn about card structure and operations
Sprints Organize work into time-boxed sprints
Dependencies Track relationships between cards