| Crates.io | trackWork |
| lib.rs | trackWork |
| version | 0.5.5 |
| created_at | 2025-10-06 04:31:54.427156+00 |
| updated_at | 2025-11-10 19:31:18.023512+00 |
| description | A terminal-based time tracking application for managing work sessions |
| homepage | |
| repository | https://github.com/nicecurry/timetrack |
| max_upload_size | |
| id | 1869744 |
| size | 249,636 |
A console-based time tracking application built with Rust featuring a terminal UI.
⚠️ Early Development Status: This project is in very early stages of development. Many features are experimental and may not work reliably. Expect bugs, incomplete functionality, and breaking changes. Use at your own risk!
cargo build --release
The binary will be available at target/release/trackWork
cargo run --release
n - Create new time entrye - Edit selected entryd - Delete selected entry (requires confirmation)Shift+D - Force delete selected entry (no confirmation)s - Stop running entry (or restart stopped entry)Shift+S - Open settingsc - Copy selected entry duration to clipboardl - Open JIRA issue in browser and copy durationShift+L - Toggle logged status for entryo - Open worklog↑/↓ - Navigate between entriesCtrl+↑/↓ or Shift+↑/↓ - Reorder entries (move up/down)←/→ - Change date (previous/next day)Esc - Clear status messagesq - Quit applicationTab - Move to next field (Description → Start Time → End Time → Issue Key)↑/↓ - Increment/decrement time in time fieldsEnter - Save entryEsc - Cancel and return to normal modeBackspace - Delete characterTab - Move to next field (Description → Start Time → End Time → Issue Key)↑/↓ - Navigate suggestion list (for descriptions/issue keys)Enter - Save entryEsc - Cancel and return to normal modeBackspace - Delete charactery - Confirm deletionn or Esc - Cancel deletionEnter or Esc - Close and return to dashboardEnter times in 24-hour format: HH:MM (e.g., 09:30, 14:45)
Leave the end time empty to create a running timer.
The application stores all data in ~/.timetrack.db (SQLite database).
src/
├── main.rs # Application entry point and event loop
├── app.rs # Core application logic and state management
├── db.rs # Database operations and SQLite interface
├── models.rs # Data models (TimeEntry)
└── ui.rs # Terminal UI rendering (separated from business logic)
The application follows a clean separation of concerns:
ui.rs): Handles all rendering and display logicapp.rs): Manages application state and user interactionsdb.rs, models.rs): Database operations and data structuresThis separation makes the codebase maintainable and testable.
n to create a new entry09:0010:30)↑/↓ to select entriess to stop a running timerl to open JIRA issue and copy durationc to copy duration to clipboardCtrl+↑/↓ to reorder entries←/→ to view different daysShift+S to configure settings (JIRA URL, colors)ratatui - Terminal UI frameworkcrossterm - Cross-platform terminal manipulationrusqlite - SQLite database interfacechrono - Date and time handlinganyhow - Error handlingdirs - Home directory detectionMIT