Skip to content

nXhermane/rust_task-tracker_cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages