Skip to main content

Tempo

Follow a stretching and physio routine in the right order and with the right timing, without resetting a timer for every exercise.

Retired
  • Mobile development
  • Health
  • AI-assisted development

Retired. I no longer use or maintain this project. It was replaced by Cadence.

Problem

Early in COVID I was working from home and my back was getting really tight, so I started stretching every day to get some flexibility back. Every stretch needed its own timer, and resetting one after another got old fast. I tried several apps, but the paywalls and limits got in the way, and the free ones were too simple for a routine with sides, holds and rests.

Later I added physio exercises on top of the stretching. Then the hard part was remembering to do them at all, and which exercises came next.

The Tempo timer screen during a push-up step, showing round 2 of 3, rep 4 of 10, 18 seconds left and the next step, Plank Hold

Options

I wanted to learn some mobile development, and I wanted the app on my Android phone and on the web. I didn’t need an iPhone version then, but I wanted to keep that option open.

  • Android and the web: One codebase for my phone and a browser, with iPhone possible later.
  • Easy to learn: This was a side project for learning mobile development, so I needed something I could pick up in the evenings.
  • No paywalls or limits: Nothing I needed locked behind a subscription.
  • Sequences and timing: A whole routine run in order, with the same timing every time for each step, side and rest.
How the options compare for Tempo
OptionAndroid and the webEasy to learnNo paywalls or limitsSequences and timing
Existing timer appsPartlyYesNoPartly
React NativeYesNoYesYes
FlutterChosenYesYesYesYes

Why Flutter won: I tried React Native first and found it really hard to learn, while Flutter’s concepts felt intuitive almost straight away.

Build

The first version was called FLXIT, a play on “flexibility”. It took two or three months before it was useful, and it grew a bit at a time after that. A routine is a list of steps, each with its own time, reps, sides and rest, and the app speaks each change so I can keep my eyes off the screen. When the physio routines got hard to keep track of, I added reminders.

Writing the timer logic by hand was the hardest part, and it took a long time to get right. Spoken cues were just as tricky: they had to fire at the right moment without talking over each other.

Later I wanted to learn how to develop with AI, so I used Claude Code to rebuild FLXIT as Tempo. The new name was about timing rather than flexibility. I’d switched back to iPhone around then, so the rebuild finally added a proper iPhone version, along with schedules for reminders and optional sync between devices through Supabase. Routines and history still live on the device first, so it works with no connection, and workouts can be logged to Apple Health or Health Connect. The privacy policy sets out what stays on the device.

It was only ever for me. I published only the web version and put it on phones through TestFlight and direct installs. It really helped me stay on track.

Four boxes, the Tempo app pointing to on-device data, which points to optional Supabase sync and optional Apple Health or Health Connect
The app keeps every routine and workout in a Drift database on the device. Sync to Supabase and logging to Apple Health or Health Connect are both optional and off by default.

Lessons

Claude Code amazed me. I could polish the code and make changes in minutes that would have taken me hours or days before. But it overcomplicated things I had kept simple on purpose, and I had to keep pulling it back.

The timer logic lived only in my head. I hadn’t documented it, so every AI change meant careful regression testing of the timer.

That led to Cadence, Tempo’s successor. I built it from scratch with a fully agentic process: a clear spec first, fully automated tests, and AI driving the work from start to finish. Starting fresh also let me choose new platforms that suit that way of working. Tempo is retired now.