██╗ ██╗██████╗ ██████╗ ██╗ ██╗
██║ ██║██╔══██╗██╔═══██╗██║ ██╔╝
██║ █╗ ██║██████╔╝██║ ██║█████╔╝
██║███╗██║██╔══██╗██║ ██║██╔═██╗
╚███╔███╔╝██║ ██║╚██████╔╝██║ ██╗
╚══╝╚══╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
A powerful command-line tool that combines lightweight todo management with time tracking. All data stored locally in SQLite.
- Task Management: Create, edit, and organize tasks with metadata (tags, projects, priority, JIRA links)
- Time Tracking: Start/stop timers with live session tracking and interactive UI
- Smart Syntax: Parse metadata directly from task titles using hashtags, @projects, +priority, and more
- Interactive TUI: Beautiful terminal interface with search, sort, and quick actions
- Reporting: Generate weekly timesheets for JIRA/Tempo integration
- Local Storage: All data stored in SQLite database (
~/.wrok/wrok.db)
brew tap balkashynov/tap
brew install wrokgit clone https://github.com/balkashynov/wrok.git
cd wrok
go build -o wrok ./cmd/wrok# Create your first task
wrok add "Fix login bug #frontend @auth +high ABC-123 due:+2d"
# List tasks (interactive UI)
wrok ls
# Start working on a task
wrok start 1
# Stop timer
wrok stop
# Generate weekly timesheet
wrok jiraCreate tasks with smart syntax:
wrok add "Task title #tag1 #tag2 @project +priority ABC-123 due:+5d"Smart syntax elements:
#hashtags→ Auto-create tags@project→ Set project name+priority→ Set priority (low/medium/high)ABC-123→ Link JIRA ticketdue:+5d→ Set due date (5 days from now)
List and manage tasks:
wrok ls # Interactive UI
wrok ls --no-ui # Simple text output
wrok ls --status done # Filter by status
wrok ls --project backend # Filter by project
wrok ls --today # Today's tasks onlyTask lifecycle:
wrok done 42 # Mark complete
wrok undone 42 # Mark as todo
wrok archive 42 # Archive task
wrok edit 42 # Edit taskStart/stop sessions:
wrok start 42 # Start timer (interactive UI)
wrok start 42 --no-ui # Start without UI
wrok stop # Stop current session
wrok status # Show current statusGenerate reports:
wrok jira # Weekly timesheet (Tempo format)The wrok ls command launches an interactive terminal UI with these controls:
↑/↓- Navigate tasks/- Search tasksf- Sort optionse- Edit selected tasks- Start/stop timerd- Mark done/undonea- Archive/unarchiveesc/q- Quit
# Simple task
wrok add "Review pull request"
# Task with metadata using flags
wrok add "Implement OAuth" -p auth -t security,backend --prio high
# Task with smart syntax (equivalent to above)
wrok add "Implement OAuth @auth #security #backend +high"
# Task with JIRA ticket and due date
wrok add "Fix database migration @backend +medium DEV-456 due:friday"# Start working on task #5
wrok start 5
# Check current status
wrok status
# Output: ⏱ Working on #5 "Fix login bug" (1h 23m)
# Stop when done
wrok stop
# Output: ✅ Stopped timer for #5 "Fix login bug" (1h 45m total)
# View weekly report
wrok jira
# Output: Formatted timesheet table# Show only high priority tasks
wrok ls --no-ui | grep "+high"
# Search for specific tasks
wrok search "login"
# Show work for this week
wrok ls --week
# Filter by project and status
wrok ls --project frontend --status todo --no-uiAll data is stored locally in SQLite:
- Database location:
~/.wrok/wrok.db - No cloud sync or external dependencies
- Export data:
sqlite3 ~/.wrok/wrok.db .dump
go build -o wrok ./cmd/wrokgo test ./...tasks: id, title, project, tags, status, priority, jira_id, due_date, created_at, etc.sessions: id, task_id, started_at, finished_at, duration_seconds
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details.