Your AI-powered workout tracker that creates personalized strength training programs. Track progress, build muscle, and see real gains—completely free to start.
I build Gainr, a lifting app that plans your training week and adjusts it when life gets in the way.
Miss Monday? It moves the work instead of pretending it never happened.
Logging and progress charts are free forever. Here's what it looks like 👇
@emlasd Solo here too. I build Gainr, a lifting app with a coach that replans your week when you miss a session.
React Native + Expo, and the Apple Watch app just shipped (Swift, same repo). What's yours focused on?
@thorstenball Built a workout app (Gainr) and the one schema call I'd make again: every logged set is its own row (weight, reps, RIR, warm-up vs working), kept apart from the plan.
Charts, PRs and "what did I lift last time" all become simple queries.
Working sets at 225 x 5? A simple bench warm-up:
Bar x 10
90 x 5
135 x 3
180 x 2
Then your first working set. Enough to groove the bar path without leaving reps on the warm-ups.
@thenamanraj A, React Native with Expo. Shipped a lifting app on iOS and Android from one codebase, and the native escape hatches covered the rest. Even the Apple Watch app is Swift inside the same Expo project. For 30 days, one codebase is the deciding factor.
Wrote comparison pages for Gainr vs Hevy, Fitbod and Strong.
While fact-checking, I found our old blog post had Hevy Pro at $8.99/mo. It's $2.99. Fixed, with sources linked.
Each page also has a "who should stick with Hevy/Fitbod/Strong" section. Some people should.
@AlphaFierceDad Usually the right call. A deload where you keep the weights but cut the sets roughly in half tends to feel less like losing ground than dropping the load. What tipped you off this time, stalled lifts or just feeling beat up?
@DorianB112 Light weight can build muscle if the sets go close to failure. The part people skip is that the 70kg x 20 has to become 75kg x 20 or 70kg x 25 at some point. Without that, it's just a hard workout on repeat.
@emlasd Hi! Solo dev on a lifting app too (Gainr, Expo + Convex). Kettlebells are an interesting one to build for since a lot of the work is timed or by reps with fixed bell sizes, not plates. How do you handle progression when the next bell is a big jump?
I built 4 free lifting calculators for the Gainr site:
• 1RM calculator
• RPE / RIR chart
• Plate calculator (lb + kg, set your own bar and plates)
• Warm-up calculator
No signup, no email wall. Just the math.
@schober222 The fix that helps people most here: pick a weight where rep 15 lands with 1-3 reps left, then keep it until you hit 15 on both sets. Writing down how many reps you had left on the last set makes the next session's weight an easy call.
@diceai0 Respect for posting the costs line, most people skip it. Solo dev on a lifting app here, $0 ad budget, so it's all organic for us too. Of the $680, how much is AI or API usage vs fixed tools? That split decides whether more users fixes the margin or makes it worse.
@Metabolic1992 Once you're adding plates to the full stack, progression gets awkward. Machine increments are big, so a rep at a time is the cleaner way to overload: keep the load until you own the top of the range on every set. Do you track the added weight separately from the stack number?
@YuryBreiNovaSt Solo dev on a lifting app, with an Apple Watch companion in progress. The hard part so far is keeping watch and phone state in sync mid-session without double-logging. Do you treat the watch as its own source of truth, or route everything through the phone?
@Jainadave_ Less often than most people think. Keep the weight until you hit the top of your rep range on every set, then add the smallest jump (5 lb on upper body, 5-10 on legs). Adding a rep each session is progress too. What lift are you trying to move?
Week in Gainr 🧵
1/ Shipped: iPhone Duo two-pane layout, a native liquid-glass redesign, coach chat now renders markdown, and the coach reschedules workouts when you train on a different day.