This series is going to work a bit differently from my usual project pages.
I find it challenging getting across the full breadth of what is required to build an app from start to finish. I often end up detailing the technical specifications of a project rather than the journey from start to finish.
By taking you on the journey with me, I'm hoping this series lets me communicate that process.
As I'm writing this introduction, I have all but an idea that came to me yesterday evening. Let me provide a bit of personal context.
My experience working out at the gym has been patchy to say the least. While I'll go consistently for a few weeks, it always falls of in the end. People say one of the best things you can do is log your progress, write down what exercises you've done, how many sets and reps you achieved. I've tried many approaches to this; the notes app on my phone, a dedicated workout app, a physical notebook. None of these ever stick and I think it comes down to three fundamental requirements that none of these options tick all the boxes for:
It needs to have zero friction, most crucially when I'm at the gym.
The notes app unfortunately requires me to spend too much time writing dates and fiddling about with titles so it actually looks semi-presentable. A physical notebook requires pre-prep work and organisation. If you haven't figured out exactly the workout you're doing beforehand and written each header accordingly, you're going to find yourself spending a lot of time frantically searching for a flat surface to scribble it down on.
A workout app is the only one that ticks this box as they have built-in templates and systems to organise your work, requiring the least input or prep work.
It needs to be simple, bloat-free and uncluttered.
The beauty of keeping everything in your notes, either physical or digital, is you know exactly what it can offer... It lets you write things down... and that's it. Every workout app I've tried tries to be everything at once, a way to track your workouts, a video library of exercises, an advertising hub for their gym or equipment. Most of these apps seem to have an incentive other than keeping you focused on what matters in the moment which is simply getting the numbers down.
It needs to provide a visual, analytical means of tracking progress.
One of my biggest struggles with what became my default approach, putting the latest workout beneath the last one in this long digital note, was that I had a hard time tracking my progress in a way that was motivating. While I could scroll to the top of my notes and see that the weight had increased in that span of time, while looking at the granular level of just last week, I'd sometimes do a bit higher and sometimes do a bit lower. If this data were to exist on a graph, I'd have more context and seeing the steady upwards trend would keep me motivated even if session to session the gains were up and down.
Yesterday evening, I started to picture this app that ticked all three of those boxes. The vision is simple:
The app comes with a database of preset exercises.
From the home screen, the user can access an exercise, either by tapping from a list of recently accessed, or searching for one. If it doesn't exist in the database the user can just type the title into the search bar and add it as a new exercise.
The user enters how many reps they've done at what weight. They can add as many sets as they like. The app will also display a configurable target baseline from this screen, either the lower-bound, average or upper-bound (I'd like to dedicate some time into researching the proper way to measure this in statistics).
The user can press log and select another exercise. Because the app tracks exercises per date, a user can easily return to one of the previous exercises and edit or add a set.
The diary or history screen compiles the user's past exercises by date, either as a calendar view or scrolling list. The user can see exactly what they've done on each day and easily make any changes.
The 'Trends' screen solves our third requirement by displaying separate graphs for each exercise that plot weight/reps over time. It's important to me to provide as much granular control over this as possible, including viewing different time periods, overlapping graphs, comparing top weights for each session vs average weights, whether reps have any bearing on how weight is plotted etc. Once again I'd like to do my research here as there's lots of science out there when it comes to exercise and I want this app needs to be grounded in truth and backed by science.
I want to be very intentional about what I don't want to include in the app, some of the following go against the core philosophy of what I'm trying to create:
Video workouts. To offer high-quality video workouts requires a high budget. This isn't feasible as a solo developer and even if it was, it simply drives up the price for the consumers, many of which aren't actually looking for paid workout videos. There are plenty of free high-quality workouts on platforms like YouTube which offers more choice.
Structured, pre-defined workouts. This may be the most controversial design decision, but to me it's what fundamentally sets this apart from other choices. As soon as you allow the user the choice of creating a set of exercises for say, 'chest day', you complicate the database and app structure. Is the user required to create a group of exercises to log them? Is data going to be logged by date or by group, and what happens if they one off decide to cut out a couple of exercises? To me, it creates a situation where you need to pre-plan your exercises and its disheartening to cut off exercises if you have less energy one session. It also just layers more menus within menus and is creates more friction increasing the cognitive load required which could be instead focused on actually working out. Plus it just seems unnecessary when date is enough of a metric to automatically group exercises.
I understand that some of the above would make this app not work for everyone. For example, the final decision completely excludes users who want to work out multiple times in a day. I'm also not imagining this app to be an all-in-one solution that makes your notes redundant, as I still need to plan my workouts and have a list of exercises I generally do for chest-day or legs-day etc.
With the vision in place, the next step in this project is to wireframe and prototype a few design options. I'll continue my documentation in the next part in the series.