A secure, simple text-based user interface for Harvest time tracking built with Go and the Bubbletea framework. This lightweight tool allows you to start and stop Harvest timers with ticket numbers and descriptions directly from your terminal.
- Select projects and tasks from your recent time entries
- Start/stop timers with ticket numbers and descriptions
- Filter projects and tasks with a simple search
- Keyboard-driven interface for quick time tracking
- Secure HTTPS/TLS connections to Harvest API
- Go 1.16 or higher
- Harvest API token with timer permissions
- Terminal with TUI support
- Clone this repository:
git clone https://github.com/yourusername/harvest-tui
cd harvest-tui- Install dependencies:
go mod init harvest-tui
go get github.com/charmbracelet/bubbletea
go get github.com/charmbracelet/bubbles/list
go get github.com/charmbracelet/bubbles/textinput
go get github.com/charmbracelet/lipgloss
go get github.com/go-resty/resty/v2
go mod tidy- Build the application:
go build -o harvest-tui .- Go to Harvest Developer Tools
- Create a new personal access token
- Note your Account ID and Token
- Set your Harvest API credentials as environment variables:
export HARVEST_ACCOUNT_ID=your-account-id
export HARVEST_ACCESS_TOKEN=your-token- Run the application:
./harvest-tui- Simple workflow:
- Select a project (use ↑/↓ to navigate, / to filter)
- Select a task
- Enter ticket number and description (e.g., "TICKET-123 - Add new feature")
- Press Enter to start/stop timer
↑/↓: Navigate through options/: Filter the list (start typing to search)Enter: Select project/task or start/stop timerEsc: Go back to previous screen?: Show/hide helpqorCtrl+C: Quit the application
- HTTPS/TLS for all API communications
- Certificate validation to prevent man-in-the-middle attacks
- Credentials stored in environment variables, not in code
MIT