| I built tmpo because I was losing money tracking freelance hours in Google Forms. It's a CLI time tracker that auto-detects your project from Git and stores everything locally. Key technical decisions: - Pure Go implementation with modernc.org/sqlite (no CGO, easier cross-compilation) - Auto-detection via git rev-parse for project names - Local SQLite database in ~/.tmpo/ (nothing leaves your machine) - Single binary, zero dependencies New features since I started: - Milestone tracking - organize entries into sprints/releases with auto-tagging - Pause/resume workflow for context switching - Manual entry creation for forgotten time - Configurable date/time formats and currency (stored in global config) - Edit/delete entries Example workflow: ```bash
cd ~/projects/client-website tmpo milestone start "Sprint 5" tmpo start "Fix auth bug" # ... work ... tmpo pause # lunch break tmpo resume tmpo stop tmpo stats --week tmpo export --milestone "Sprint 5" --format csv
``` It detects "client-website" from git and tags everything with the active milestone automatically. The codebase is ~6k LOC. Working on the Homebrew formula, but pre-built binaries are now available. GitHub: <https://github.com/DylanDevelops/tmpo> Questions for you all: 1. Are there any features that you want to see in tmpo? 2. Currently using a 3-tier config priority (.tmporc > git > directory). Better approaches? 3. Any concerns with the milestone auto-tagging approach? |