4 releases

Uses new Rust 2024

new 0.8.4 Feb 4, 2026
0.1.22 Jan 14, 2026
0.1.21 Jan 14, 2026
0.1.20 Dec 18, 2025

#449 in Compression


Used in 4 crates (3 directly)

GPL-3.0 license

185KB
3.5K SLoC

communitas-kanban

A CRDT-based Kanban system for Communitas.

This crate provides offline-first, peer-to-peer collaborative project boards with conflict-free synchronization via Yrs (Yjs) CRDTs.

Features

  • Boards: Kanban boards owned by Projects
  • Columns: Workflow stages with optional WIP limits
  • Cards: Work items with rich text descriptions, checklists, assignments
  • Steps: Checklist items within cards
  • Comments: Threaded discussions on cards
  • Tags: Categorization and filtering
  • Filtering: Filter cards by state, assignee, tags, due dates

Architecture

  • Normalized Data Model: Cards stored in global registry, columns store card IDs
  • Atomic Operations: Card moves use single CRDT transactions
  • OR-Set Collections: Conflict-free add/remove for assignees and tags
  • YText Rich Text: Collaborative editing for descriptions and comments

Usage

use communitas_kanban::{KanbanService, BoardSettings};

let service = KanbanService::new(crdt_manager, peer_id);

// Create a board for a project
let board = service.create_board("project-four-words", "Sprint 1".to_string(), None).await?;

// Add columns
let todo = service.add_column(&board.id, "To Do".to_string(), None).await?;
let done = service.add_column(&board.id, "Done".to_string(), None).await?;

// Create and move cards
let card = service.create_card(&board.id, &todo.id, "Task 1".to_string(), None).await?;
service.move_card(&board.id, &card.id, &done.id, 0).await?;

Dependencies

~11–16MB
~199K SLoC