Most focus timers are a countdown with a start button. Untimer asks for a small deliberate act first: press and hold for two and a half seconds, let go, and twenty five minutes begin. That gesture is the whole point. Starting a session should feel like a decision, not a click you make while thinking about something else.
The timer lives on the server
The hard part of a timer on the web is that browsers are unreliable places to keep time. Tabs sleep, phones lock, people refresh, and a second device shows a different number.
Untimer stores each session as one absolute moment in Postgres. Every client asks the same question and gets the same answer, so a closed tab, a reload, or a switch from laptop to phone changes nothing about the session that is running. The clients render state, they never own it.
No score, ever
When a session ends you get an account of what happened: how long you ran, what you marked, where you stopped. What you never get is a grade, a streak you can break, or a chart implying you should have done better. Tools that score you turn attention into a performance metric, and the people who most need a timer are the least helped by being ranked.
What it runs on
Four parts, each with a single job.
- A static React application on Cloudflare Pages, built with Vite, for the app itself.
- Postgres on Supabase holding the schema, the migrations, the stored procedures, and the tests. This is the contract every client codes against.
- An Astro site for the marketing pages, served as static files.
- An Android application, built and running, not yet released.
The backend is deliberately the authority. Adding a client means implementing the same contract, not inventing new rules.
What is finished and what is not
The web application and the backend are working, and the Android build runs on a device. Untimer Plus is the paid tier, covering the deeper insights and the full ladder of marks. The Android release has not shipped.