← All work

Fitness · Phone app · Side project

Aether: a strength-training app with no App Store and no subscription

Workout logging and well-known training programs in one free app. It installs from Safari, works offline and keeps its data on the phone.

Aether workout logger showing last session’s sets and today’s targets, with the rest timer running
Logging, with last time and today’s target
The GZCLP program in Aether, with its progression rules and the next day’s lifts
A program and its progression rules
Squat detail in Aether: a chart of estimated one-rep max over time, above each session
Progress on one lift
Aether’s workout summary with a new personal record and next session’s weight going up
A personal record, and the next weight

What it is

Aether combines the logging of an app like Hevy with the structured programs of an app like Boostcamp. During a workout it shows what you did last time and pre-fills today’s target, so most sets are one tap. It times rest, does the plate math, and spots personal records as they happen.

It carries twelve well-known programs, including GZCLP, 5/3/1 and the Reddit PPL, and moves the weights up automatically by each program’s own rules. It imports Hevy history and backs everything up to a single file.

Why I built it

I was logging in one app and following a program in another, and paying for both. I wanted one app that did exactly what I use, nothing more, and that kept my data on my phone.

How it was built

Claude Code built the first version as a native iPhone app. The Claude session ran in the cloud and couldn’t open an iPhone, so the automated build was set up to compile the app on a Mac, launch it in Apple’s iPhone simulator, take screenshots and post them back where Claude could read them. That let it see its own work and fix what looked wrong.

Then I switched it to a web app you add to the home screen. It looks and works like an app, runs offline, and needs no Apple developer account, which costs $99 a year.

The stack

App

  • React
  • TypeScript
  • Vite
  • Progressive web appInstalls from Safari to the home screen and works offline, through a service worker
  • ZustandApp state
  • ImmerImmutable updates to that state
  • IndexedDBOn-device storage, with room for years of workouts

The first, native version

  • Swift and SwiftUIThe original iPhone app
  • Xcode and the iOS SimulatorCompiled on a Mac in CI, then run in the simulator for screenshots

Quality and delivery

  • VitestUnit tests for the coaching logic
  • PlaywrightEnd-to-end flows in a phone-sized browser
  • GitHub ActionsType checks, tests, a build and the browser flows on every push
  • Claude CodeWrote the code, in cloud sessions

Technical decisions

  1. 1A home-screen web app instead of a native one. The SwiftUI version felt right, but putting it on my phone meant Apple code signing or a $99-a-year developer account. A progressive web app installs from Safari, works offline and costs nothing. It gives up lock-screen notifications and haptics.
  2. 2Data stays on the phone, in IndexedDB rather than localStorage, which only holds a few megabytes. The app asks the browser not to clear it. The cost is that backups are my job, so a backup is one JSON file, and the app reminds me when the last one is more than a week old.
  3. 3Coaching logic apart from the screens. Progression rules, one-rep-max estimates, plate math, the Hevy importer and backups are plain TypeScript with unit tests, so the coaching can be tested without a browser and the screens can change freely.
  4. 4Programs as data. The twelve programs and 258 exercises are JSON, run by one tested engine instead of twelve copies of similar logic.

What I learned

If the AI can’t see the result, give it a way to. The screenshot loop turned “it compiles” into “it looks right”.

Platform costs are product decisions too. Moving to a home-screen web app gave up lock-screen notifications and haptics, and removed the yearly fee and the signing hassle. For an app only I use, that was the right trade.

Results

Built
October 2026, over three days
Training programs
12
Exercises in the catalog
258
Cost to run
$0

How it gets built

The pipeline I build with, and the rules behind it, are on How I build with AI.