At IdeaPlaces · 2025–now
Gymswell
Training and nutrition on one screen. Free on the web, iPhone beta on TestFlight.
- 699 commits in a year
- Swift Live Activities
- In App Store review
The story
A year of work and my biggest project. Gymswell keeps your training and your plate on one screen and says where the day stands: what is left, what is done, how the week is shaping up. In the session, every set is one row: set, previous, weight, reps, done. The rest timer starts when you confirm a set, a Lock Screen Live Activity keeps the clock, and you can log by voice: "three sets of eight at 135". Meals are logged by describing them, by barcode, or from a photo. An AI coach reads the week and answers in plain words.
Who uses it
Free on the web at gymswell.com. The iPhone build is in closed beta with a small group of testers on TestFlight and going through App Store review. Testers report from inside the app, and their reports drove most of what shipped in August and September.
What I did
- Built the React Native app from the first commit: workout logging, planning and calendar, nutrition, recipes, progress charts, badges and streaks.
- The AI layer: natural-language workout and meal parsing, the coach, photo import, exercise recommendations. Moved the coach to a faster model when answers took 44 seconds.
- Native pieces in Swift: Lock Screen Live Activities and home-screen widgets that share state with the app. Voice logging, plate-snapped weights, background rest timer.
- Firebase auth and Firestore, RevenueCat trials, server-side metering of AI calls, an in-app tester report that posts to Discord, and the test suite that finally covered a 10,700-line workout screen.
- gymswell.com: a hand-written static page whose Dashboard is real DOM, rebuilt in September.
What’s new
- App Store review turned the build down twice under guideline 2.5.4 for its audio background mode. The mode is gone, and the rest-timer notification still rings on time without it.
- A Learning section: 140 answers with their sources cited, short video reels that start on their own, and a picker to jump between topics.
- A timed exercise is a running clock on the Lock Screen Live Activity. The coach says what failed and retries server errors instead of going quiet.
- One phone, one owner: a second account on a shared phone never sees the first one’s workouts, units or settings.
- Apple Health sync, weigh-ins and cardio in and every session out; CSV export of food, workouts and a daily summary; an adaptive calorie target with a weekly check-in.
- Photograph a CrossFit whiteboard and the app reads the workout; you log one score. The parser was measured on twelve real whiteboard photos.
- gymswell.com rebuilt as a hand-written static page; the Dashboard on it is real DOM, and a slider lets you find the seam between it and the real screenshot.
- A hand-built workout is restored, saved and backed up. The plateau verdict is a colour on the chart, and the plan is a choice under it.
- Quick re-log from the food row, two workout photos side by side, food lists rendered as tables.
- Found why "Break PR" failed for a tester mid-session: the server metered a build that had nothing to sell. Fixed the metering, the modals, and the timer that forgot it was paused.
- The AI coach moves to gpt-5.4-mini. Answers that took 44 seconds now arrive before you look away.
- Testers can report what they see without leaving the app; it lands in Discord.
- The workout screen had 10,700 lines and no test that could see it. Now it has both, and build 38 no longer dies on its error boundary.



