Inspiration

For years now, my friends and I have been putting on group fitness challenges as a way of keeping each other accountable. Staying active can be hard, but having a sense of accountability, and a bit of healthy competition can really keep you motivated. So about 2-3 times a year, we put together a group "Fitness-tally", as we call it. We set a challenge length (usually 10 weeks), and a weekly minimum (usually 4 days/week), and everyone "checks in" with a photo of themselves working out in order to earn points. Simple enough!

The mechanics of running the challenge, however, can be quite messy... We started with a group chat, where you'd send your photos, and a designated scorekeeper tallied up the points. This became very messy, very quickly.

We transitioned to a shared-group note where we would upload our check ins, which worked great! But within a few weeks: it would take minutes to scroll to the bottom, friends were deleting other people's check ins, we started hitting cloud storage limits, and most notably, people began to cheat. Furthermore, it became a real chore for the scorekeeper to update the scoreboards, and deal with the accusations of cheating and unfair treatment of players. There had to be a better way....

This was the inspiration for Challengrs - a better way forward for group fitness challenges.

What it does

Challengrs is a photo-proof fitness accountability platform where you create challenges, and compete for the top spot!

** How It Works**

  1. Join/Create a Challenge: 30-day, 10-week, or custom.

  2. Set Your Weekly Frequency (1–6 days a week minimum)

  3. Snap a photo of yourself at working out, and a custom trained CoreML model verifies whether the photo is a valid workout or not.

As users compete in the challenge, they can earn points, build streaks, and see their friends progress alongside them.

Points & Progression • Regular check-ins earn you +1 point • Hitting your weekly minimum earns you +5 points • If enabled, _ Bonus Days _ can give you a competitive edge with +2 points each

Points feed into your personal leaderboard and unlock streaks, badges, and levels.

Players can compete in group, solo, or head to head challenges, making Challengrs a versatile platform for fitness accountability. The game mechanics keep players motivated, and the machine-learning verification keeps them honest.

How we built it

Challengrs is built for iOS devices using: • SwiftUI and UIKit (frontend client) • CoreML (for workout-photo verification) • Supabase (for db and auth) • Onesignal (for push notifications & SMTP email) • And of course, Revenuecat (for peace of mind subscription processing & management)

Challengrs started with a prototype in Figma, and rapidly evolved into a SwiftUI preview. The project grew quickly: as the backend domain and scoring logic were solidified, more and more ideas started to flow for making the core-gameplay loop more engaging for users. This was definitely a preview-driven development cycle, where throwing stuff at the wall, testing ideas, and having fun drove the project forward at lightning speed. The end result is a fun, inclusive, and competitive platform that lets users stay active however they want.

Challenges we ran into

One of the core mechanics of the game is the CoreML model that verifies the workout photos that users use to check-in and earn points. Tweaking the model to recognize all forms of workouts was a great challenge that required gathering massive amounts of data, and balancing classes to get reliable results. The model can recognize "workouts" as photos of users at the gym, in pilates or yoga studios, on hikes/runs, bike rides, and a whole variety of other sports. Of course, the model is also very good at recognizing when a user is _ not _ working out as well. This makes for a fun twist on our little workout challenge, and will surely minimize cheating.

Another challenge was designing the scoring system: How could I keep players motivated throughout their challenges? A problem we often ran into in our real world challenges was player drop-off: Once someone fell behind, it became impossible to catch up. Therefore, they would stop competing altogether, and stop working out as consistently. So I came up with the concept of _ Bonus Days _ - if a challenger falls behind one week, they can make up for it with sweat equity to stay in the game! Combined with the weekly completion bonus, this could give players that are falling behind a chance to climb back up the leaderboards.

Also, what if a player wants to compete in multiple challenges at once? I reworked the system so that users can participate in multiple concurrent challenges at a time (users can create up to 5, but join as many as they'd like). Checking in with a photo is now a global action - check in once, and the points for each group are properly updated.

Finally, a big challenge was ensuring user safety. Making sure to cap challenges at 6 days a week maximum (including limiting bonus days) to force a rest day, employing content safety mechanisms and sensitive content analysis compatibility, as well as implementing proper database security and access required a deal of focus. After all, the users' health, safety, and privacy are a top priority.

Accomplishments that we're proud of

Building a scalable and complex full-stack platform all by myself is an achievement in and of itself that I am very proud of. I have an extensive background in art, engineering, business, and project management, bringing all of that together and pouring it into this project has been so meaningful and empowering to me.

Furthermore, I have personally felt the great benefits that this type of challenge has had on my health and overall wellbeing. Seeing my friends get fit alongside me is also very inspiring - so building a better way to stay motivated and grow healthier makes me very proud as both a friend and a developer. I'm most proud that I get to share this now with the world.

What we learned

Doing a little more brainstorming ahead of time would have helped in terms of locking down backend domain rules, scoring system complexity, and scale considerations. Additionally, using helpful libraries like the ones provided by Revenuecat and Onesignal really make their first-party counterparts seem bloated and overly complicated. In the past I had opted to use Storekit for IAP, which resulted in delayed reporting, complicated paywall setup, and headaches beyond belief. I had also always opted for FCM as the defacto service for push notifications, which adds layers of bundle bloat and unnecessary setup overhead to the whole process (not to mention the perpetual threat of deprecation). By contrast, using Revenuecat and Onesignal to implement their respective features felt like a breeze. Especially as a solo dev, they made everything so easy – from setup, to their real-time dashboards. These are new indispensable tools in my belt, and I can't wait to dig deeper.

What's next for Challengrs

I can't wait to share Challengrs with the world, and build upon this strong foundation with:

  • In app events
  • Global leaderboards
  • More user interactivity (likes, motivational bumps, more motivational nudges)
  • Linking to more fitness metrics
  • Expanding to Android
  • Improving the workout verification CoreML model with more data

Why you should try Challengrs

Challengrs is more than a fitness tracker – it's a consistency engine that celebrates every win and keeps you accountable with machine-learning verification. It's flexible for busy schedules yet relentless for results, it's ideal for gym accountability, fitness challenges, and building unbreakable habits. Whether hitting the weights, trails, or mat, or just want to compete with your friends, Challengrs is your perfect virtual fitness accountability partner.

Built With

Share this project:

Updates