All work
Live2025

Better Productivity

Habits, counters and the metrics behind them

Visit Better Productivity

React · Vite · Convex · Clerk

Hands writing in a spiral notebook in low blue light

The problem

Most habit trackers optimise for the streak, which measures compliance rather than change. They are good at making you feel accountable this week and bad at telling you whether the last six months moved anything at all.

Why it exists

I wanted the history to be the product. A tracker should be able to answer "is this actually working" with data, and that means treating every check-in as a measurement rather than a box.

How I solved it

Counters and habits write into a single reactive store, and metrics are derived from that history rather than stored alongside it — so adding a new view of the data never means backfilling. Built on Vite for a fast local loop, with Convex handling sync.