Tracr
A personal time tracker built because nothing else fit the way I actually work.
- TypeScript
- SQLite
- Bun
- Node.js
I’ve tried every time tracker. Toggl, Clockify, the one built into Notion, the one built into Jira. They all want you to work the way they think you work — projects with sub-projects, billable vs. non-billable, weekly summary emails.
Tracr is different because it has exactly the features I need and nothing else.
What it does
You run it from the terminal. You start a timer with a short description. You stop it. That’s the core loop. The data lives in a local SQLite file. There’s a log command that shows what you’ve been doing. There’s a summary command that groups by tag or project.
No cloud sync. No web dashboard. No accounts. A file on your disk that you own.
Why raw SQL
I started with an ORM — Drizzle, specifically. It’s a good ORM. But I kept fighting it whenever I needed a query that didn’t fit the happy path. Aggregations, window functions, custom time bucketing — all things SQLite does well and all things that become awkward through an abstraction layer.
Switched to raw SQL with a thin query helper. The queries are readable, the migrations are just .sql files, and I understand exactly what’s hitting the database.
Status
Active development. I use it daily. Occasionally I add something I’ve been missing. The schema has been stable for a few months now.