The honest polish: shipping v1
Two focused weeks, a wall of small fixes, real device bezels for the screenshots, and an honest accounting of what building this with Claude was actually like.

Here is the part nobody puts in a launch announcement: the last stretch before you ship is not glamorous. It is a long wall of small fixes, the unglamorous work of making a thing that mostly works into a thing you are proud to put your name on.
The wall of small things
The cleanup sprint was dozens of little corrections. Bigger numerals on the smallest watches so they stay readable. Preview cards that were showing empty charts now seeded with a realistic curve. A media widget I decided was not pulling its weight, removed, but with old layouts that used it migrated gracefully so nobody's screen breaks. Swimming pace shown per hundred metres instead of per kilometre, because that is how swimmers think. Plain-language explainers behind little info buttons for the genuinely confusing stuff, like what fitness, fatigue, and form actually mean.
None of these is a headline. All of them are the difference between an app that feels like a prototype and one that feels finished. I kept a hard 80 percent test-coverage gate the whole way through, so every one of these fixes came with the tests to keep it fixed. That gate caught more of my mistakes than my pride would like to admit.
Faking a convincing demo, honestly
Then the screenshots, which had their own funny problem. To show off the History tab and the training-load chart you need a phone with months of training data on it. A reviewer at Apple, or me on a fresh simulator, has none. So I built a seeding mode: a flag that injects about ninety days of realistic fake workouts through a mock health client, so the app fills with believable stats without ever touching your real Apple Health or asking for permission. The fake data never ships in the real app; it exists only to make honest-looking screenshots.
The bit I enjoyed most was the framing:
feat: marketing capture overhaul + real-bezel framing (phase 24) feat(marketing): instrument-grade Effort triad as editor signature screen
Rather than fake plastic device frames, I used real photographed bezels of the actual Apple Watch and iPhone hardware, and wrote a tool that flood-fills each bezel image to find the transparent screen cut-out automatically, then drops the screenshot in at exactly the right place and angle. It even shuffles through different watch bands and case colours so the shots are not monotonous. Over-engineered for a set of marketing images? Absolutely. But it is the same instinct as the rest of the app: if I am going to show you something, it should be the real thing, presented honestly.
The honest reckoning: building this with Claude
I promised at the start that I would be straight about this, so here it is.
Runara was built by me and Claude, together, and that is not a thing I am hiding in the footnotes. My commit history records it plainly: the commits Claude helped with carry a Co-Authored-By: Claude line, and I never scrubbed them out. That history is not public, so you cannot go and check it, you will have to take my word for it. But I would rather tell you straight than quietly leave it off this page.
So is "AI slop" a fair charge? I do not think so, and here is the honest reasoning rather than a defensive slogan.
What Claude was extraordinary at: breadth and speed. Wiring up a speech synthesizer across sixteen sports and two languages. Generating the scaffolding for twenty-odd widget renderers. Writing the first correct draft of a SQLite tile writer. Producing clean, idiomatic Swift faster than I can type. For a solo developer with three kids, a wife, a houseful of animals, a pool to maintain, and a day that does not have spare hours in it, that leverage is the only reason this app exists at all. Two focused weeks instead of two years.
What it was not good at, and where every interesting story in this series came from: judgment about the real world. It did not foresee that a caught decode error would cascade into silent data loss across an update. It proposed two reasonable fixes for the pedometer crash that were both wrong because the crash happened before its code ran. It could not feel that a German cue sounded stilted, or that a complication was rendering as a blob, or that an offline check was lying on real hardware. Every one of those was caught by me, running the thing on a real watch, on a real run, with enough experience to know what wrong looks like.
That is the actual shape of it. Claude is a phenomenal force multiplier on the typing and the breadth. The architecture, the taste, the paranoia about edge cases, the willingness to throw away a plausible fix because it does not address the root cause, the testing on real hardware, the decision about what is even worth building, that was all me, and that is the part that separates a tool I trust from generated mush. The machine made me faster. It did not make the decisions. I am genuinely proud of what came out, and I would not be if I did not believe my fingerprints were on every part that matters.
What you actually get
So, where it lands. Runara is a feature-complete version 1: a watch configurator, a real live workout engine, offline maps, heart-rate zones, interval plans, on-device bilingual voice coaching, a Live Activity on your phone, full Apple Health round-trip with history and splits, training-load tracking, and yes, support for swimming in a pool that never moves.
It collects nothing about you. It is a one-time purchase, no subscription, and I will keep updating it for as long as I reasonably can. If there is ever a big enough leap to justify it, maybe there is a version 2 someday. We will see how it goes, honestly, that is not false modesty, I genuinely do not know yet, and I would rather tell you that than pretend I have a five-year roadmap.
Thank you for reading the whole build log. I started running again in February with a Tuesday-night training group, got annoyed at some apps, and ended up building the one I wanted. If that resonates with you, take a look at everything Runara does or get in touch. I hope it makes your next run a little better.
See you on the trails.