A lightweight CLI tool written in Rust for tracking weekly commitments, logging progress, and maintaining a history of personal productivity.
The project uses SQLite and SQLx for async database access, along with Clap for command-line parsing.
- Add commitments with weekly target hours
- Log progress (e.g., daily or weekly hours done)
- List all active commitments
- Archive / Reactivate commitments without deleting history
- View current week's progress (per commitment and total)
- SQLite-backed, async, and easy to migrate
src/
│
├ # CLI parts with application backends (database parts)
├── db.rs # Database setup + SQLx queries
├── main.rs # Entry point + routing commands
├── model.rs # Structs representing DB rows
├── cli.rs # Command-line argument definitions (Clap)
│
├ # TUI part, vaguely follow MVC architecture but also uses the above database as the 'backend'
├── app.rs # TUI App state (Model)
├── ui.rs # TUI UI Functions (View)
└── tui.rs # TUI main loop + Event Handling (Controller)
migrations/
└── <timestamp>.sql # SQLx migration
- Add commitments with weekly target hours
- Log progress (daily/weekly hours)
- List all active commitments
- Archive commitments
- Reactivate archived commitments
- View current week progress (per commitment + total)
- Add new commitment with TUI
- Edit old commitment with TUI
- Add Testing for the Functionalities
- Add TUI mode using
ratatui(Mostly Done) - Integrate with
neovim/vim - Export data to CSV
- Graph weekly progress (e.g., via
ratatui) - Allow for having "Off-Weeks"
- Sync across devices
Thanks for your interest in contributing! All contributions are welcome — whether it’s fixing a bug, improving documentation, or adding new features.
- Make sure you have Rust (stable) installed.
- Clone the repository:
- You can directly build the project and run it with
cargo run
- Use SQLx CLI for migrations:
Note that currently the project relies on a relative path to find the database (terrible idea, happy to take PR), so you have to run
cargo install sqlx-cli sqlx run migrations
cargo runin the top level directory, and you should / can usesqlx create databaseto create the database.
This Project uses Rust's standard formatting (rustfmt), please use this formatting for the project.