Skip to content

Feature : Interactive Terminal UI (TUI) Vault Explorer #66

Description

@vivek0369

📌 Overview

Currently, bdstorage operates as a pure command-line interface (CLI) tool, where outputs are displayed as plain text logs and tables. While functional, navigating large deduplication vaults, analyzing storage usage, and managing duplicate files can become difficult and unintuitive for users.

This feature proposes building a fully interactive Terminal User Interface (TUI) using the Rust crate Ratatui to provide a modern, keyboard-driven vault management experience directly inside the terminal.

The TUI will allow users to visually explore their storage vaults, inspect deduplicated files, compare duplicate groups, monitor storage statistics in real time, and perform selective restore/delete actions efficiently.


🎯 Goals

  • Improve accessibility and usability of bdstorage
  • Provide visual insights into vault storage usage
  • Make deduplication analysis intuitive
  • Enable keyboard-driven file management workflows
  • Create a polished developer experience suitable for demos and portfolio showcases

✨ Proposed Features

1️⃣ Interactive Dashboard

A real-time dashboard displaying:

  • Total vault size
  • Space saved via deduplication
  • Number of unique files
  • Duplicate groups count
  • Compression/dedup ratio
  • Recently added files

Possible UI layout:

+--------------------------------------------------+
| Vault: ~/backup_vault                            |
|--------------------------------------------------|
| Total Size: 1.2 TB                               |
| Space Saved: 430 GB                              |
| Duplicate Groups: 184                            |
| Unique Chunks: 8.2M                              |
+--------------------------------------------------+

2️⃣ File Explorer Navigation

Users should be able to:

  • Browse directories interactively

  • Expand/collapse folders

  • Search files instantly

  • Sort by:

    • size
    • duplicate count
    • modification date
    • restore status

Keyboard shortcuts:

Key Action
↑ ↓ Navigate
Enter Open folder/file
/ Search
d Delete
r Restore
q Quit

3️⃣ Duplicate Group Visualization

A dedicated panel for viewing identical files side-by-side.

Example:

Duplicate Group #42
├── /photos/backup/img001.jpg
├── /downloads/img001_copy.jpg
└── /archive/2024/img001.jpg

Features:

  • Highlight original vs duplicate
  • Show chunk similarity metrics
  • Preview metadata
  • Quick delete/restore actions

4️⃣ Storage Analytics Panel

Visual analytics directly in terminal:

  • Top space-consuming directories
  • Largest duplicate sets
  • Deduplication efficiency
  • Chunk distribution statistics

Potential use of:

  • progress bars
  • sparklines
  • mini charts

5️⃣ Restore & Delete Workflow

Interactive workflows for:

  • selective restore
  • safe deletion
  • bulk operations
  • confirmation prompts
  • undo queue (optional)

6️⃣ Live Activity / Logs Panel

Real-time event monitoring:

  • active scans
  • chunking progress
  • restore operations
  • error reporting
  • indexing status

🛠 Technical Implementation

Suggested Stack

Component Technology
TUI Framework Ratatui
Terminal Backend Crossterm
Async Runtime Tokio
State Management Rust structs + async channels
File Watching (Optional) notify crate

🧱 Suggested Architecture

src/
 ├── tui/
 │    ├── app.rs
 │    ├── ui.rs
 │    ├── events.rs
 │    ├── state.rs
 │    ├── widgets/
 │    └── keybindings.rs
 │
 ├── services/
 │    ├── vault.rs
 │    ├── dedup.rs
 │    └── restore.rs
 │
 └── main.rs

📷 Suggested Screens for Demo

  • Dashboard View
  • Duplicate Explorer
  • Storage Heatmap
  • Restore Confirmation Screen
  • Search & Filter Interface
  • Live Dedup Scan Progress

🔥 Why This Feature Matters

Developer Experience

  • Makes bdstorage visually impressive
  • Easier debugging and monitoring
  • More approachable for new users

Portfolio Value

A polished Rust TUI demonstrates:

  • systems programming
  • async architecture
  • state management
  • terminal rendering
  • UX engineering

📈 Expected Impact

Metric Impact
User Accessibility High
Visual Appeal Very High
Contributor Interest High
Demo/Portfolio Quality Excellent

✅ Acceptance Criteria

  • Fully functional TUI launches with bdstorage tui
  • Interactive keyboard navigation works smoothly
  • Dashboard metrics update dynamically
  • Duplicate groups can be inspected visually
  • Restore/delete workflows are operational
  • Responsive terminal rendering
  • Works on Linux/macOS/Windows terminals
  • Proper error handling and cleanup
  • Comprehensive documentation added

🧪 Bonus Enhancements (Optional)

  • Mouse support
  • Theme switching
  • Vim keybindings
  • Multi-pane layouts
  • Chunk-level visualization
  • Remote vault support
  • Snapshot timeline browser
  • Interactive graphs

🏷 Labels

NSoC'26
GSSoC'26

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions