A week is a grid, not a feed
Between a notepad with hours in it and a corporate time-and-attendance system there is nothing built for one person: cloud trackers want a subscription and an account per head, corporate ones want a rollout.
Span carries one thing all the way. From pressing start to the lines you paste into an invoice. It knows the rate, the rounding rule and the fact that some work is not billable, so the end of the month leaves a list of items instead of a memory.
What is inside
Week grid
Projects down, days across, totals on both edges. An empty Thursday is as visible as a busy Tuesday.
One running timer
Starting a new one stops the previous: parallel timers invent hours that never happened. The start button sits in the project row.
Rounding per client
By the minute, or up to 5, 10, 15, 30 minutes as agreed. Duration is computed at read time, so changing the rule recalculates last month too.
Rate with an exception
The rate lives on the client, but a project may override it: fixes under an old contract cost less than new development.
Invoice lines
Billable entries fold into one row per project: description, hours, rate, amount. Copy into GoBill or export as CSV.
Single binary
Go and SQLite without cgo, templates and CSS embedded in the executable. Three languages, light and dark themes, the database next to the binary.