10 releases (4 breaking)
| 0.5.5 | Nov 10, 2025 |
|---|---|
| 0.5.4 | Nov 6, 2025 |
| 0.5.0 | Oct 16, 2025 |
| 0.4.0 | Oct 15, 2025 |
| 0.1.0 | Oct 6, 2025 |
#1327 in Command line utilities
140KB
3K
SLoC
trackWork
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!
Features
- Terminal UI: Clean, intuitive interface built with ratatui
- Time Entry Management: Create, edit, delete, and reorder time entries
- Navigation: Easy keyboard-driven navigation
- Daily Views: View and track entries by date
- Running Timers: Start entries without an end time and stop them later
- Duration Tracking: Automatic calculation and display of time durations
- Timeline Visualization: Vertical bar chart with fixed time resolution (1, 2, 5, or 10 minutes per row)
- JIRA Integration: Link entries to JIRA issues and open them directly
- Weekly Statistics: Aggregated time tracking by issue or description
- Clipboard Integration: Copy durations and work logs
- Persistent Storage: SQLite database for reliable data storage
- Date Navigation: Browse entries across different days
- What's New Screen: Shows new features on version updates
Installation
Build from source
cargo build --release
The binary will be available at target/release/trackWork
Run
cargo run --release
Usage
Keyboard Shortcuts
Normal Mode
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+↑/↓orShift+↑/↓- Reorder entries (move up/down)←/→- Change date (previous/next day)Esc- Clear status messagesq- Quit application
Edit Mode
- Type to enter data in the current field
Tab- 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 character
Create Mode
- Type to enter data in the current field
Tab- 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 character
Confirm Delete Mode
y- Confirm deletionnorEsc- Cancel deletion
What's New Screen
EnterorEsc- Close and return to dashboard
Time Format
Enter times in 24-hour format: HH:MM (e.g., 09:30, 14:45)
Leave the end time empty to create a running timer.
Data Storage
The application stores all data in ~/.timetrack.db (SQLite database).
Project Structure
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)
Architecture
The application follows a clean separation of concerns:
- UI Layer (
ui.rs): Handles all rendering and display logic - App Layer (
app.rs): Manages application state and user interactions - Data Layer (
db.rs,models.rs): Database operations and data structures
This separation makes the codebase maintainable and testable.
Example Workflow
- Launch the application
- Press
nto create a new entry - Enter description (e.g., "Client meeting")
- Tab to start time, enter
09:00 - Tab to end time, leave empty for running timer (or enter
10:30) - Tab to issue key field, optionally enter JIRA issue (e.g., "PROJ-123")
- Press Enter to save
- Use
↑/↓to select entries - Press
sto stop a running timer - Press
lto open JIRA issue and copy duration - Press
cto copy duration to clipboard - Use
Ctrl+↑/↓to reorder entries - Use
←/→to view different days - Press
Shift+Sto configure settings (JIRA URL, colors)
Dependencies
ratatui- Terminal UI frameworkcrossterm- Cross-platform terminal manipulationrusqlite- SQLite database interfacechrono- Date and time handlinganyhow- Error handlingdirs- Home directory detection
License
MIT
Dependencies
~36–57MB
~1M SLoC