DEV Community

Cover image for I built FitForge because every weight training app came with stuff I didn't ask for
Chinmay Karnik
Chinmay Karnik

Posted on

I built FitForge because every weight training app came with stuff I didn't ask for

Why I built this

I do calisthenics and strength training regularly. The annoying part was never the workout itself, it was remembering what I'd done last time. How many reps, how much weight, especially after coming back from a break of a week or two.

I checked Strava first, since I already used it for runs. Its weight training mode is basically an afterthought. You can't even pick a specific exercise, let alone log sets, reps, or weight against it.

So I looked at apps built specifically for weight training. Those exist, and some of them are genuinely fine at the logging part. But almost all of them come bundled with meal plans, calorie counting, body fat estimates, and prebuilt bodybuilding programs you never asked for. I just wanted to log a workout. All that extra stuff was noise around a pretty simple requirement.

That gap is why FitForge exists. The idea, roughly, was Strava but for weight training: track your sets and numbers over time, see your consistency, and don't make me wade through a nutrition app to do it.

FitForge demo

Logging a set during a live workout.

What it actually does

FitForge is a React Native and TypeScript app, Android for now. Everything is stored on the device, there's no server and no login, so it works fully offline.

The core idea is three ways to log a workout: live (logging sets as you go), backdated (for a session you already did), and routine-based (starting from a saved template, which can itself be live or backdated). The routine option exists because most people training seriously already have some structure, push day, pull day, full body, whatever it is, and re-picking the same exercises from scratch every session gets old fast.

Around that core there's a calendar to see your workout consistency at a glance, a stats section for progress over time, and a profile with your recent activity. Nothing exotic. It's the same handful of screens most tracking apps have, just built around weight training instead of bolted onto something else.

GitHub logo ChinmayKarnik / FitForge

Strava for strength training. A mobile app to log workouts, build custom routines, and track your lifting progress over time. Built with React Native for iOS and Android.

FitForge

Strava for strength training.
A mobile app to log, track, and analyze your weight training workouts.
Built with a focus on capturing the nuance of strength training that existing apps miss

Live demo: logging a set in real time


Why FitForge?

There's no good, well-known app dedicated to strength training tracking. Most fitness apps are either running-focused (like Strava) or overly complex with meal plans and macro tracking. FitForge does one thing: help you systematically log your weight training sessions and understand your progress over time.

Features

Flexible Workout Logging

  • Live workouts: Log sets, reps, and weight as you train
  • Backdated workouts: Add completed workouts after the fact
  • Routine-based workouts: Save custom routines and reuse them across sessions

Workout Management

  • Create and edit custom routines with sets, reps, and rest times
  • Build your own exercise library on top of pre-built exercises
  • Full CRUD operations for routines…




Doing the design myself

I'm not a designer, and this is the part of building FitForge that took the most trial and error. At a company, someone else usually owns this. Here, every layout, spacing, and color decision was mine to get wrong first and fix later.

I started by throwing general prompts at ChatGPT, things like "create a design for the active workout page." It hallucinated a lot, especially a few iterations in, drifting further from what I'd actually asked for each time. I also tried routing designs through Figma, but AI image generation into an actual Figma file lost too much in translation back then to be usable, so that path got dropped.

What worked better was splitting the problem in two. First, fix the content with plain wireframes, so the AI wasn't also guessing at what belonged on the screen. Once the content was locked, I could give it creative freedom on the visual side and just iterate.

That left the real question: what actually counts as "good" here. After enough rounds of prompt, look at the result, give feedback, prompt again, I started noticing the same few things showing up in every version I actually liked, without having read any design theory going in. I ended up naming them, mostly so I could refer back to them consistently. "First Glance Registration": a screen should tell you what it's about within half a second, no reading required. "Distinguishedness": different sections of a screen need to feel visually distinct from each other, not just spaced apart. And on top of both, everything should stay restrained, since I wanted FitForge to stay a clean, minimalist app, no meal tracking or calorie counters bolted on, no heavy animations or busy image-heavy screens. Just workout data, presented plainly, for people who actually care about the numbers.

From there I started paying attention to the toolset I actually had as someone designing through an AI rather than by hand: typography weight and spacing, color roles, opacity used for hierarchy instead of new colors, how a card groups related things, how much visual weight to give an icon. Eventually I wrote all of it down as an actual design-tenets document, mostly so I'd stop relitigating the same decisions on every new screen.

Even with the document written, some screens still took several more rounds to get right. But by the end I had something I didn't have going in: an actual eye for design, built entirely by iterating on this one app.

Day details Statistics Active workout
Where those rules show up: day details, stats, active workout.

Getting it onto the Play Store

Before Google lets you submit an app for production, you have to run a closed test: real testers, opted in for at least 14 days, actually using the app. I called up friends and family, and asked a few of them to pass it along to people they know from the gym. Ended up with 26 testers, all people I know directly or one step removed.

Most people used the core loop, logging workouts, checking the calendar, working from routines. A handful went further and found real problems: a startup crash, layout issues with the system bars, stale data showing up on the routines and exercises screens, a profile that didn't refresh properly, a broken calendar interaction. All of that came in over WhatsApp, in bits and pieces, over those two weeks. I fixed what I could before submitting for production review.

It was a good reminder that an app working on my own phone means very little. Other people's devices, other people's habits, find the bugs you'd never hit yourself.

What's next

The social layer is the one I keep coming back to, seeing that people you know are also training, without turning it into another feed to scroll. Profile picture and bio already exist in the app, they're just not tied to anything yet, so once friends and social actually land, that groundwork already pays off.

Stats is the other obvious one. Right now it's basic progress numbers, and I want it to grow into proper graphs over time instead of just totals.

The harder part is doing social without giving up on local-first, which is what FitForge is today. The plan is to keep everything on-device by default and add only the minimal backend the social side actually needs, plus a backup feature along the lines of what WhatsApp does for chats, so your data can move to a new phone without the app needing a server for everything else.

None of this is built yet. Just the direction I'm leaning.

Top comments (0)