Skip to content
/ bdui Public

Real-time Text User Interface for bd (beads) issue tracker with Kanban, Tree, Graph views, and notifications

Notifications You must be signed in to change notification settings

assimelha/bdui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

BD TUI 🎯

A beautiful, real-time Text User Interface (TUI) visualizer for the bd (beads) issue tracker.

License Platform Bun

BD TUI Screenshot

✨ Features

πŸ“Š Multiple Visualizations

  • Kanban Board - Classic 4-column view (Open, In Progress, Blocked, Closed)
  • Tree View - Hierarchical parent-child relationships with interactive navigation
  • Dependency Graph - ASCII art visualization of issue dependencies
  • Statistics Dashboard - Comprehensive analytics with visual bar charts

🎨 Rich User Experience

  • Real-time Updates - File watching with automatic refresh
  • Search & Filter - Full-text search across title, description, and ID
  • Custom Themes - 5 built-in color schemes (Default, Ocean, Forest, Sunset, Monochrome)
  • Responsive Layout - Adapts to terminal size with smart column hiding
  • Vim-style Navigation - hjkl keys supported alongside arrow keys

⚑ Issue Management

  • Create Issues - Add new issues directly from the TUI
  • Edit Issues - Modify any field (title, description, priority, status, assignee, labels)
  • Export/Copy - Export issues in Markdown, JSON, or plain text format
  • Desktop Notifications - Native OS notifications with custom icons for status changes

🎯 Smart Features

  • Per-column Pagination - Independent scroll positions for each status column
  • Detail Panel - View full issue details including all dependencies
  • Blocked Status Detection - Automatically moves issues with blockers to "Blocked" column
  • Keyboard-first - Every action accessible via keyboard shortcuts

πŸš€ Installation

Prerequisites

  • Bun runtime (required)
  • bd (beads) issue tracker
  • A .beads/ directory with beads.db in your project

Homebrew (macOS)

The easiest way to install on macOS:

brew tap assimelha/tap
brew install bdui

To upgrade to the latest version:

brew upgrade bdui

Download Pre-built Binary

Download the latest release for your platform:

  • macOS (ARM64): bdui-macos-arm64
  • macOS (x64): bdui-macos-x64
  • Linux (x64): bdui-linux-x64
  • Windows (x64): bdui-windows-x64.exe

Make it executable (Unix systems):

chmod +x bdui-macos-arm64
./bdui-macos-arm64

Build from Source

# Clone the repository
git clone <repository-url>
cd bdui

# Install dependencies
bun install

# Run in development mode
bun run dev

# Or build single binary for your platform
bun run build
./bdui

Building for All Platforms

# Build for macOS (both ARM64 and x64)
bun run build:macos

# Build for Linux x64
bun run build:linux

# Build for Windows x64
bun run build:windows

# Build for all platforms
bun run build:all

Binaries will be created in the dist/ directory (~50-60 MB each, includes Bun runtime).

πŸ“– Usage

Basic Usage

Navigate to a directory containing a .beads/ folder and run:

bdui

Or from the source directory:

bun run dev

The app will automatically discover the .beads/ directory by walking up the directory tree (like git).

Keyboard Shortcuts

Navigation

  • ↑/↓ or k/j - Move up/down (select issue)
  • ←/β†’ or h/l - Move left/right (change column in Kanban view)
  • Enter or Space - Toggle detail panel

Views

  • 1 - Kanban board view (default)
  • 2 - Tree view (hierarchical)
  • 3 - Dependency graph
  • 4 - Statistics dashboard

Actions

  • N (Shift+N) - Create new issue
  • e - Edit selected issue
  • x - Export/copy selected issue
  • t - Change theme

Search & Filter

  • / - Open search (searches title, description, ID)
  • f - Open filter panel (filter by assignee, tags, priority, status)
  • c - Clear all filters and search
  • ESC - Close search/filter/form panels

Other

  • r - Refresh data from database
  • n - Toggle notifications
  • ? - Show help
  • q or Ctrl+C - Quit

🎨 Views

Kanban View (Default)

The main view shows issues organized in 4 columns:

  • Open - New or ready-to-work issues
  • In Progress - Currently being worked on
  • Blocked - Issues waiting on dependencies
  • Closed - Completed issues

Features:

  • Color-coded priorities (P0-P4)
  • Type indicators (epic, feature, bug, task, chore)
  • Label tags
  • Per-column pagination and selection
  • Responsive layout (adapts to terminal size)

Tree View

Shows hierarchical parent-child relationships:

  • Navigate with ↑/↓ or k/j
  • Press Enter/Space to toggle details
  • Press e to edit selected issue
  • Visual tree structure with connection lines
  • Depth-aware indentation

Dependency Graph

Visualizes issue dependencies:

  • Issues organized by dependency levels
  • Shows blocking relationships
  • Navigate with ↑/↓ or k/j
  • Color-coded by type and status
  • Displays parent-child and blocking relationships

Statistics Dashboard

Comprehensive analytics:

  • Status Distribution - Visual bar chart of issue statuses
  • Priority Breakdown - Distribution across P0-P4
  • Issue Type Distribution - Epic, feature, bug, task, chore counts
  • Key Metrics - Completion rate, blocked rate, dependency count
  • Top Assignees - Most active team members
  • Top Labels - Most used labels

πŸ”” Notifications

BD TUI supports native desktop notifications for important events:

Notification Types

  • Task Completed βœ… - When an issue status changes to "closed"

    • Green checkmark icon
    • System sound (macOS)
    • Shows issue ID and priority
  • Task Blocked 🚫 - When an issue becomes blocked

    • Red prohibition icon
    • Silent notification
    • Shows number of blocking issues

Notification Icons

Custom icons are located in assets/icons/:

  • completed.png - Green circle with white checkmark (512x512)
  • blocked.png - Red circle with prohibition symbol (512x512)

Platform support:

  • macOS - Full support with custom icons in Notification Center
  • Linux - Freedesktop.org notification spec
  • Windows - Toast notifications

Toggle notifications with the n key. Current state is shown in the footer (πŸ”” ON / πŸ”• OFF).

Testing Notifications

bun run test:notifications

✏️ Creating and Editing Issues

Create New Issue

Press N (Shift+N) to open the create issue form:

  • Tab/Shift+Tab to navigate between fields
  • Fill in: title, description, priority (P0-P4), type, assignee, labels
  • Press Enter to submit
  • ESC to cancel

Edit Existing Issue

Select any issue and press e to open the edit form:

  • All fields pre-populated with current values
  • Tab/Shift+Tab to navigate
  • Use ↑/↓ to change priority and status
  • Press Enter to save changes
  • ESC to cancel

Changes are immediately written to the bd database and reflected in the UI.

πŸ“€ Exporting Issues

Press x on any selected issue to open the export dialog:

Format Options (←/β†’ to navigate)

  • Markdown - Formatted markdown with headers and lists
  • JSON - Complete issue data in JSON format
  • Plain Text - Simple text format with clear structure

Action Options (↑/↓ to navigate)

  • Copy to Clipboard - Copy formatted issue to system clipboard
  • Export to File - Save to {issue-id}.{extension} in current directory

Press Enter to execute. Works on macOS, Linux, and Windows.

🎨 Themes

BD TUI includes 5 built-in color schemes. Press t to open the theme selector:

Available Themes

  • Default - Classic blue/cyan theme with high contrast
  • Ocean - Blue and cyan tones for a calm, aquatic feel
  • Forest - Green-focused theme inspired by nature
  • Sunset - Warm magenta and yellow tones
  • Monochrome - Clean grayscale theme for distraction-free work

Use ↑/↓ or k/j to browse themes. Each theme shows a live color preview. Press Enter to apply.

πŸ” Search & Filter

Search (/)

  • Full-text search across title, description, and issue ID
  • Type to search incrementally
  • ESC to close

Filter (f)

  • Assignee - Filter by assigned person
  • Tags - Filter by labels (multi-select)
  • Priority - Filter by P0-P4
  • Status - Filter by open/in_progress/blocked/closed
  • Tab to cycle between filter types
  • Space/Enter to toggle selections
  • ESC to close

Clear Filters (c)

Removes all active search and filter criteria.

πŸ“Š Responsive Layout

Terminal Size Adaptation

  • Wide (>160 cols): All 4 columns + detail panel
  • Medium (80-160 cols): All 4 columns
  • Narrow (40-80 cols): 2 columns
  • Very narrow (<40 cols): 1 column

Minimum Requirements

  • Width: 80 columns (recommended: 120+)
  • Height: 24 rows (recommended: 30+)
  • True color support recommended but not required

Terminal dimensions are shown in the header (e.g., "120x30").

πŸ§ͺ Testing

Test with Sample Data

A test project with sample issues is included:

cd /tmp/bdui-test
bun run /path/to/bdui/src/index.tsx

The test project includes:

  • 11 diverse issues (varied priorities, types, statuses)
  • Multiple assignees (alice, bob, charlie, diana)
  • Parent-child relationships (epic with children)
  • Blocking dependencies
  • Various labels and metadata

See /tmp/bdui-test/README.md for a complete feature walkthrough.

Manual Testing

# Test notifications
bun run test:notifications

# Run in development mode
bun run dev

# Test with your own bd project
cd /path/to/your/project
bun run /path/to/bdui/src/index.tsx

πŸ—οΈ Architecture

Technology Stack

  • Runtime: Bun (native SQLite, faster than Node.js)
  • UI Framework: Ink (React for CLIs)
  • State Management: Zustand
  • Database: SQLite (direct reads from bd's database via bun:sqlite)
  • Notifications: node-notifier (cross-platform)

Data Flow

  1. Database Reading - Direct SQLite queries to beads.db
  2. File Watching - Debounced fs.watch monitoring with 100ms debounce
  3. State Management - Zustand store with normalized data structure
  4. Real-time Updates - Pub/sub pattern for database changes
  5. Notifications - Status change detection with OS notifications

Project Structure

bdui/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/       # React/Ink components
β”‚   β”‚   β”œβ”€β”€ App.tsx       # Main app with keyboard handling
β”‚   β”‚   β”œβ”€β”€ Board.tsx     # View router
β”‚   β”‚   β”œβ”€β”€ KanbanView/   # 4-column Kanban board
β”‚   β”‚   β”œβ”€β”€ TreeView.tsx  # Hierarchical tree view
β”‚   β”‚   β”œβ”€β”€ DependencyGraph.tsx
β”‚   β”‚   β”œβ”€β”€ StatsView.tsx
β”‚   β”‚   β”œβ”€β”€ CreateIssueForm.tsx
β”‚   β”‚   β”œβ”€β”€ EditIssueForm.tsx
β”‚   β”‚   β”œβ”€β”€ ExportDialog.tsx
β”‚   β”‚   β”œβ”€β”€ ThemeSelector.tsx
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ bd/               # bd integration
β”‚   β”‚   β”œβ”€β”€ parser.ts     # SQLite database reading
β”‚   β”‚   β”œβ”€β”€ watcher.ts    # File watching
β”‚   β”‚   └── commands.ts   # bd CLI integration
β”‚   β”œβ”€β”€ state/            # State management
β”‚   β”‚   └── store.ts      # Zustand store
β”‚   β”œβ”€β”€ themes/           # Theme definitions
β”‚   β”‚   └── themes.ts
β”‚   β”œβ”€β”€ utils/            # Utilities
β”‚   β”‚   β”œβ”€β”€ notifications.ts
β”‚   β”‚   └── export.ts
β”‚   β”œβ”€β”€ types.ts          # TypeScript types
β”‚   └── index.tsx         # Entry point
β”œβ”€β”€ assets/
β”‚   └── icons/            # Notification icons
β”‚       β”œβ”€β”€ completed.png
β”‚       β”œβ”€β”€ blocked.png
β”‚       └── README.md
β”œβ”€β”€ CLAUDE.md             # Development documentation
β”œβ”€β”€ package.json
└── README.md             # This file

🀝 Contributing

Contributions are welcome! This project uses bd (beads) for issue tracking.

Development Setup

# Clone repository
git clone <repository-url>
cd bdui

# Install dependencies
bun install

# Run in development mode
bun run dev

Code Guidelines

See CLAUDE.md for detailed architecture documentation and guidelines for:

  • Adding new view modes
  • Adding new filters
  • Creating new components
  • Modifying the data flow

πŸ“„ License

MIT License - See LICENSE file for details

πŸ™ Acknowledgments

πŸ“ž Support

For issues, questions, or contributions:

  1. Check the documentation in CLAUDE.md
  2. Review existing bd issues in this repository
  3. Create a new bd issue with detailed information

Made with ❀️ for developers who love the command line

About

Real-time Text User Interface for bd (beads) issue tracker with Kanban, Tree, Graph views, and notifications

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages