task-tracker-cli

Crates.iotask-tracker-cli
lib.rstask-tracker-cli
version0.1.0
created_at2025-12-10 09:04:21.510344+00
updated_at2025-12-10 09:04:21.510344+00
descriptionA lightweight, fast Rust command-line task tracker for managing TODOs and simple tasks locally. Designed to be minimal, scriptable, and user-friendly with beautiful formatted output.
homepagehttps://github.com/nXhermane/rust_task-tracker_cli
repositoryhttps://github.com/nXhermane/rust_task-tracker_cli
max_upload_size
id1977708
size62,577
nXhermane (nXhermane)

documentation

https://github.com/nXhermane/rust_task-tracker_cli/blob/main/README.md

README

rust-task-tracker_cli

A lightweight, fast Rust command-line task tracker for managing TODOs and simple tasks locally. Designed to be minimal, scriptable, and user-friendly with beautiful formatted output.

Features

  • ✅ Add, list, complete, edit, and remove tasks
  • 📁 Persistent local storage (JSON)
  • 🎨 Beautiful formatted table output
  • 📊 Colored logging (debug, info, warn, error)
  • 🚀 Fast and lightweight
  • 📝 Human-readable output for piping and scripting

Requirements

Installation

Clone and build locally:

git clone https://github.com/nXhermane/task-tracker-cli.git
cd task-tracker-cli
cargo build --release
# optional: install to cargo bin directory
cargo install --path .

Quick start

Add a task

cargo run -- add "Buy groceries"

List all tasks

cargo run -- list

Mark a task in progress

cargo run -- mark-in-progress 1

Mark a task as done

cargo run -- done 1

Remove a task

cargo run -- remove 1

Edit a task description

cargo run -- edit 1 "Read Rust book chapter 7"

Get a specific task

cargo run -- get 1

Storage

Tasks are stored in a simple local file (e.g., temp/tasks.json or a user data directory). The format is human-readable JSON to allow manual edits and easy interoperability.

Logging & Output

Production mode (minimal logs)

cargo run -- list

Debug mode (detailed logs)

RUST_LOG=debug cargo run -- add "My task"

Log levels

RUST_LOG=trace cargo run -- list     # Very detailed
RUST_LOG=debug cargo run -- list     # Technical details
RUST_LOG=info cargo run -- list      # Info/warn/error only (default)

Project Structure

src/
├── lib.rs                  # Library root with module declarations
├── main.rs                 # CLI entry point and command parsing
├── models/
│   ├── mod.rs             # Model traits (Serializable, Identifiable)
│   └── task_status.rs     # TaskStatus enum
├── task/
│   ├── mod.rs             # Task struct and Serializable impl
│   └── manager.rs         # TaskManager and IdGenerator structs
├── storage/
│   ├── mod.rs             # Storage trait definition
│   └── file_storage.rs    # FileStorage implementation
├── ui/
│   ├── mod.rs             # UI module
│   └── display.rs         # display_task and display_tasks functions
└── cli/
    ├── mod.rs             # CLI types (TaskOperation, TaskCommand)
    └── commands.rs        # Command execution logic

Module Organization

  • models: Data structures and traits
  • task: Core task management logic
  • storage: File persistence abstraction
  • ui: User interface / display formatting
  • cli: Command-line interface and execution

Testing & Linting

Run tests:

cargo test

Format and lint:

cargo fmt
cargo clippy -- -D warnings

Dependencies

  • chrono - Date/time handling
  • json - JSON parsing and serialization
  • prettytable-rs - Beautiful table formatting
  • tracing - Structured logging
  • tracing-subscriber - Log filtering and formatting

Contributing

  • Fork the repo, create a branch, and open a pull request.
  • Follow idiomatic Rust and include tests for new behavior.
  • Keep changes small and focused.

License

Licensed MIT. See LICENSE file for details.

Roadmap

  • 🔍 Search and filter by status or text
  • 📤 Export/import tasks
  • ⭐ Add priority and due-date metadata
  • 🔄 Subcommands for recurring tasks
  • ☁️ Sync backend (optional)
  • 📱 Interactive mode (planned)

Questions or feature requests

Open an issue in the repository.

Commit count: 0

cargo fmt