Introducing YATTA

YATTA (Time Tracking for End Users)

Time tracking systems are for employers. YATTA is for users.

https://github.com/gsprdev/yatta

yatta is user-focused time tracking client: a local-first, single-user terminal app for recording your own time honestly, and, if you need to, uploading it to whatever reporting system your company requires.

{{ .TableOfContents }}

Why “yatta”?

yatta may have been named for the Japanese やった (“I did it!”) an exclamation of excitement and accomplishment. This name reflects the joy and satisfaction we all feel when submitting our timesheets. Alternatively, it might stand for “Yet Another Time Tracking Application”. We may never know which for certain.

What yatta is

  • For one person, at a terminal. This iteration builds one thing well: a terminal time tracker for a technical individual contributor who already lives in a terminal and tracks their own time in detail.
  • Always present. A keyboard-driven application meant to be left running in a pane. Its resting state is a live view of the current timer, today’s accumulated time, and anything needing attention.
  • Local-first. Your data lives in a local SQLite file on one machine. No account, no server, no sync, no hosted backend. Time entries carry client, employer, and project detail that should not be replicated casually, so yatta never copies them anywhere else.
  • Low friction. Search and resume-from-recent are primary interactions, and a task is only required at upload time, so you can record first and classify later. Easier entry leads to more accurate data.
  • Optionally connected. Zero or one remote system may be active. It supplies your task hierarchy and receives your time; yatta never reads existing time entries back from it.
  • Deliberate about upload. Entries accumulate locally and stay freely editable. Uploading is always an explicit act, one-way and final: yatta creates remote records and never updates or deletes them, and adjustments happen in the remote system.
  • Honest about what happened. Rounding and aggregation (for example, one worklog per task per day, rounded to 15 minutes) are applied only to a copy at upload time. Your local records are never modified, so your timeline stays true even when a remote system’s conventions change.

What yatta is not

Multi-user or team features, cloud sync, mobile or browser clients, and reporting or analytics beyond today’s running total are all out of scope by design.

Why yatta Exists

Yatta is born of an observation that user-friendly minimum-friction no-magic time tracking leads to not only individual efficiency, but more accurate outcomes.

Personal Annoyance

I like tracking my time, to understand how its spent and what I might optimize. I resent entering my time in corporate time tracking systems because it is pure overhead I should be spending on the actual work they pay me for.

In an experimental audit, I found I spent 60-90min/week just on the act of time tracking itself: looking up tickets and filing out their work logs, tabulating totals, applying required rounding and thresholds per policy, and replicating to multiple systems. I would suffer this inefficiency no longer.

Observed Inaccuracies

My minor obsession with time tracking is born of a pathological honesty, and dating back to my consulting days with clients build hourly.

When you have one major client, it’s easy enough to track your hours and bill based on the time you were active. As work complexity increased and you find yourself context switching and serving multiple per day, honest, accurate accounting becomes a challenge.

It’s commonplace to record one’s hours at the end of a workday. When working with 2 clients plus 1 internal project, reported time did not align with yield, and I suspected an issue. Working and reporting my estimates as normal, I recoreded my days activity. Estimated vs audit results wer esignificantly different. Colleages repeating my experience produce dsimilar discrepancies.

Even mere hours later, how much time we feel we spent, vs actually spent, are often quite different.

Why We Hate Time Tracking

Most time reporting tools are built for the managers and analysts who read the data. The people actually entering time are left with unfamiliar interfaces, poor UX, and tooling shaped by the destination system rather than by the act of recording. Inaccurate reporting is often a direct consequence of poor tooling.

yatta inverts that priority. Its core is built on the insight is that the ideal local experience for honest time tracking is the same regardless of where that time ultimately gets reported. Whether the destination is Jira, Redmine, Toggl, some other system, or nothing at all, your workflow is the same. yatta owns that local experience and treats remote systems as optional, downstream concerns.

Supported Platforms

Jira, Redmine, and Toggl are supported today as remote systems. If anyone has a need or interest in any other remote systems, and I don’t need to pay for the software to develop the integration, let me know!

Completely local time tracking is also supported, as is a hybrid approach.

Technology

yatta is a TUI available as a cross-platform single-file binary (written in go).

It’s interface is based on charmbracelet/bubbletea, which I first encountered through their elegantly single-purpose Markdown browser charmbracelet/glow.