Inspiration

I've been training in the gym — including bodybuilding — for almost ten years. I'm a gym enthusiast by passion and a software developer by trade, and over the years I've also helped several friends with their training.

During that time, I've tried almost every kind of gym tracker app I could find. The pattern was often the same: great marketing, overloaded interfaces, unreliable offline functionality, social features I didn't really need, and — most importantly — no good solution for something that always frustrated me when helping other people.

I had no clear way to see what the people I was coaching were actually doing between sessions.

Training plans were shared through messages, progress was discussed in separate apps, workout history was somewhere else, and spreadsheets quickly became difficult to manage.

That was the main reason I started building BeeStrong - Gym Tracker app.

I wanted to create a gym tracker that worked well for someone training alone, while also building a real coach-client system directly into the app.

Instead of creating another fitness app with hundreds of disconnected features, my goal was to build something that I would personally want to use every day.


What it does

BeeStrong combines workout tracking, progress monitoring, coaching tools, AI and social features in one application.

The core of the app is a flexible workout tracker that allows users to create programs, schedule workouts and record their training sessions.

One of the most important features is Coach-Client Mode.

A coach can connect with a client, create training programs for them and apply those programs directly to the client's training calendar. Coaches can also view their clients' workout history and communicate with them through the built-in chat.

This means fewer spreadsheets, fewer separate messaging apps and a much clearer picture of what the client is actually doing.

BeeStrong also includes an AI Coach powered by GPT.

The AI Coach can analyse information such as the user's training experience and previous workout history and then generate a structured training program. Instead of returning only a block of AI-generated text, the program is created using a format that can be saved and used directly inside BeeStrong.

Another important requirement from the beginning was offline training.

A gym does not always have reliable Wi-Fi or mobile reception, so users can continue recording their workout without an internet connection. The data can then synchronise once connectivity is restored.

Other features include:

  • Progress charts for tracking training development over time
  • Progress photo comparison
  • A friends system
  • The ability to create challenges with friends
  • Training programs and workout calendar management
  • Workout history
  • Premium features through Google Play subscriptions
  • Biometric login support

How we built it

I built BeeStrong independently over approximately four months, with AI assisting me during parts of the development process.

BeeStrong is built as a Progressive Web App (PWA) and packaged as a native Android application using Capacitor 8.3.4, while Supabase handles the backend, database and authentication. This approach allowed me to build the core application using web technologies while still accessing native Android capabilities and distributing the app through Google Play.

Supabase is also used for account management and email authentication.

Users can create an account using their email address and later access the app using either their login credentials or biometric authentication on supported devices.

The application is currently available for Android, with the iOS version in development.

For Android subscriptions and Premium access, I implemented Google Play Billing.

One of the more complex architectural requirements was supporting both online and offline usage. Workout tracking needs to remain usable even when the device temporarily loses its connection, while still keeping the user's data consistent once the connection returns.

I also had to design BeeStrong around two different but connected user experiences:

  • Athlete
  • Coach

An athlete needs fast access to workouts, exercise history and progress without unnecessary complexity.

A coach needs additional tools to manage clients, review their training history, create programs and communicate with them.

Keeping these two experiences connected without making the interface confusing became an important part of the development process.


Challenges we ran into

Building the database structure

One of the biggest challenges was designing the database.

A gym tracker generates much more connected data than it might initially appear.

Users have programs. Programs contain workouts. Workouts contain exercises. Exercises contain sets, repetitions and weights. Then there are workout histories, calendars, coaches, clients, friendships, challenges, progress data and other relationships.

As BeeStrong grew, I had to think carefully about how all of these pieces should connect while keeping the structure maintainable.

This became even more important when implementing Coach-Client Mode because the same training data needed to be accessible in different ways depending on who was viewing it.

Creating the exercise database

Building the exercise database was another major task.

Exercises are one of the foundations of the entire application, so the database needed to be organised well enough to work with workout creation, training history, AI-generated programs and future features.

It also needed to stay practical for the user. A huge exercise database is not useful if finding and adding an exercise during a workout takes too long.

Fixing real-world usability problems

A large part of development wasn't one huge technical problem — it was many small problems that only became obvious while actually using the app.

A button in the wrong place, an interaction requiring one step too many, unexpected behaviour during a workout or a workflow that made sense while programming but felt awkward in the gym.

These smaller issues taught me that building a working feature and building a feature that feels good to use are two very different things.

Testing BeeStrong during real workouts helped expose problems that would have been difficult to notice through development testing alone.


Accomplishments that we're proud of

One of the biggest accomplishments for me is simply taking BeeStrong from an idea to a real production app available on Google Play in around four months.

I built the project independently as a PWA packaged for Android with Capacitor, while learning and solving many technical problems along the way.

I'm particularly proud of successfully implementing several features that were important to me from the beginning:

  • A fully usable offline workout mode with synchronisation when the connection returns
  • A complete Coach-Client Mode with program creation, workout history access and built-in chat
  • An AI Coach powered by GPT that can analyse a user's training history and experience and generate a structured, ready-to-save workout program
  • Google Play Billing and a working free + Premium subscription model
  • Progress tracking with charts and progress photo comparison
  • Social features including friends and training challenges

Another important milestone was getting real users to actually use the app.

Seeing BeeStrong move from something I was building for myself into a product that other people use for their training was a significant achievement.

I'm also proud that I managed to keep the core workout experience relatively simple despite continuously adding more advanced functionality.

For me, BeeStrong is proof that an idea based on a real personal problem can become a complete product if you keep building, testing and improving it.


What we learned

One of the biggest things I learned is that simple UX is more valuable than having the largest possible feature list.

Fitness apps can become complicated very quickly. There are hundreds of possible statistics, training methods, charts and features that could be added.

But during an actual workout, the user doesn't want to navigate through five screens just to record a set.

The most useful feature is often the one that requires the least effort to use.

I also learned a lot about designing a system for two connected user types.

BeeStrong isn't only an athlete tracker and it isn't only coaching software. Both sides need to work independently while still sharing training data, programs and communication.

Building that relationship forced me to think differently about permissions, user flows and data structure.

The project also gave me practical experience with:

  • Implementing Google Play Billing
  • Preparing and publishing a production Android application
  • Authentication and backend development with Supabase
  • Designing and maintaining a growing exercise database
  • Building offline functionality and data synchronisation
  • Integrating GPT into a real product instead of using AI only as a chatbot

But probably the most important lesson was that being an experienced gym user doesn't automatically mean I know what every gym user wants.

My own experience gave me the idea for BeeStrong and helped me identify many problems, but real users interact with software differently.

Feedback became an important part of improving the app.

Sometimes a feature that seems obvious to the developer isn't obvious to the user. Sometimes something I considered important wasn't important to users at all.

That feedback has influenced how I now approach new features.


What's next for BeeStrong - Gym Tracker

The next stage of BeeStrong will expand the app beyond manual workout tracking. Some of the features currently planned include: Smartwatch Integration Connecting BeeStrong with smartwatches so training and activity data can be accessed more easily during workouts.

Calorie Surplus / Deficit Calculator A tool designed to help users estimate an appropriate calorie target depending on whether their goal is gaining muscle, maintaining weight or reducing body fat.

Maximum Muscular Potential Calculator A calculator designed to estimate a person's potential muscular bodyweight based on factors including their skeletal structure.

Camera-Based Rep Counter One of the features I'm most interested in developing is a computer-vision rep counter for home workouts. The idea is to use the phone's camera to recognise exercises such as:

  • Push-ups
  • Squats
  • Sit-ups

Instead of simply detecting movement, the goal is for the system to count correctly performed reps by analysing the user's movement.


Final Thoughts

BeeStrong - Gym Tracker started because I was frustrated with the tools I was already using.

I didn't want another gym app where workout tracking, coaching, communication and progress existed as completely separate systems.

So I started building the tool I wanted to use myself.

Four months later, BeeStrong is a real application being used by real people — but I still see it as the beginning of the project rather than the finished product.

There are many features left to build, many things left to improve and probably many assumptions that future user feedback will prove wrong.

And that's exactly what makes building BeeStrong interesting.

Train. Track. Progress. BeeStrong.


Built With

  • android
  • biometric
  • capacitor
  • coach-client-platform
  • fitness
  • google-play
  • google-play-billing
  • gpt
  • mobile-app
  • offline-first
  • openai-api
  • postgresql
  • progressve-web-app
  • pwa
  • rest-api
  • supabase
  • supabase-auth
  • typescript
  • workout-tracker
Share this project:

Updates

Submission history