I’m an iOS developer and runner from Perth. I made Workout Writer because creating structured workouts for watches is still much more tedious than it should be. Well, I started making it originally because I thought it would be an interesting problem, and would look cool if it worked - if I'd known how long it would take I might have done something else...
When I say "tedious" in relation to creating workouts on a watch, I think it's just something inherent in the problem those interfaces are trying to solve, which is why both Apple and Garmin (and pretty much all other workout creation apps or services I've seen) are so similar.
If it takes me 5 mins to program a workout on my watch, then I'm not going to do it regularly. If it takes someone less technical 10 (stressful) minutes to program a workout, and they get it wrong, then they're never going to do it again.
The app makes it quick and easy by taking plain text like this:
Warmup 10min Easy
6 x
800m Threshold
200m Float
Cooldown 2km
…and turning it into a structured workout that can be sent to Apple Watch or Garmin.
The parsing is immediate and deterministic - using a tonne of regex. The app updates a preview of the workout structure as you type, no waiting with a spinner whilst an LLM interprets what you meant (differently every time).
It was really important to me that the user could see immediately what was being "understood" in the text, that if it's going to misunderstand, then it should do it right away, and consistently.
There is an optional AI feature that can help generate workout text, but that is separate from the parser - it's peripheral, and more there to make a boring Easy run a little more interesting, or come up with a novel pyramid intervals session. The AI generates text that's then parsed using the same parser - the original workout text is always the source of truth.
The idea came from noticing that runners (or at least those in my run club) generally describe workouts this way in their Strava descriptions. I had typed up a hard run club session after the fact and realised the same style of text could probably be used to create the structured workout before the run.
The app allows easy sharing of workouts with others via a URL (or QR code). The URL contains the entire workout, tags, metadata, so that the receiving device can access it immediately.
A few implementation details:
- SwiftUI, SwiftData, CloudKit sync.
- Apple Watch support uses WorkoutKit.
- Garmin support uses Garmin’s Training API.
- Effort tags like Easy/Tempo/Threshold map to the user’s own pace, heart-rate, cadence, or power ranges - as your fitness changes, just update the tag and reuse the same workouts.
- Shared workouts containing effort tags automatically adapt to the recipient's fitness levels because the workout is just the text, and is parsed on the recipient's phone.
- It is iPhone-only for now - I'll consider adding Android if there's demand.
- It's translated into 16 languages - this was particularly challenging when the actual parsing came into it!
- There are no user accounts.
- There is no ad SDK.
- There is no IDFA request.
- It's Freemium - soft paywall, and you can use almost everything in the app without paying, although there's a limit on the number of workouts that you can save/edit.
I’d really love some feedback on all aspects of it - even if it's just "it looks like it was designed by a software developer".
https://workoutwriter.com
https://apps.apple.com/us/app/id6608967303