-
-
Turn everyday movement into a habit with a fitness experience built like a game.
-
Your camera tracks your movement and counts reps automatically—no wearable needed.
-
Choose from 29 exercises across upper body, lower body, core, and more.
-
Earn FP each week, climb through the leagues, and compete for the top of the rankings.
-
Pro Coach adapts your workout plan to your goals, progress, and training balance.
-
Earn FP, build streaks, level up, and unlock achievements as you keep moving.
-
Fitlet app icon
-
Fitlet home screen — a clear next workout, progress, and motivation at a glance.
-
Real-time pose tracking and automatic rep counting during a squat.
Awards entered: RevenueCat Design Award, HAMM Award, RevenueCat Peace Prize, and Influencer Award — Yoga & Fitness.
Inspiration
Fitlet started from a problem I had myself: I wanted to work out at home, bought some dumbbells, and then stopped after a few days.
I tried workout logging apps too, but they introduced a different kind of friction. I still had to decide what to do, choose exercises, enter reps, and keep track of everything manually.
That made me realize that the workout itself is not always the biggest barrier. Sometimes, it is the number of small decisions required before and during it.
Fitlet is mainly designed for people who know exercise is good for them, but do not know where to start or struggle to feel motivated enough to begin.
I wanted to make starting a workout feel almost frictionless: open the app, tap a few times, and have the next step already decided.
But making exercise easy to start is only half the problem. People also need a reason to come back.
That is why Fitlet combines FP, map progression, streaks, weekly leagues, and a mascot into one progression system. Each workout contributes to something larger than a single session.
I was strongly inspired by how Duolingo uses streaks and leagues to encourage consistency, and by how Ring Fit Adventure turns exercise itself into part of a game experience. Fitlet takes inspiration from those ideas and applies them to lightweight home fitness.
What it does
Fitlet is a mobile fitness app designed to reduce the friction of starting exercise and give users reasons to keep going.
It currently includes 29 bodyweight and dumbbell exercises.
Users can choose a workout themselves or let Coach recommend what to do next based on their settings, workout history, progress, and training balance. Once a workout is selected, they place their phone and begin. During the session, the camera tracks body movement in real time and automatically counts repetitions or hold time.
The screen also shows a live skeleton overlay, progress, and simple form feedback, so users do not need to repeatedly touch the phone or manually log every set.
Fitlet also adapts over time. At selected points after an exercise, users are asked whether it felt too hard or too easy. That feedback is used to adjust future repetition targets, allowing the workout experience to gradually adapt as the user's ability changes.
When a workout is completed, users earn FP. That progress is reflected across several systems:
- map progression
- levels
- streaks
- weekly leagues
- workout history
Fitlet also treats recovery as part of consistency. After maintaining a streak, users can earn a Recovery Streak, allowing them to take a rest day without losing their progress.
Users can still build their own sessions when they want more control.
The core idea is simple:
Open the app and know what to do next. Finish the workout and feel that you moved forward.
How I built it
Fitlet is built with Expo, React Native, and TypeScript.
For real-time body tracking, I implemented native camera pipelines separately for iOS and Android and use Google ML Kit Pose Detection to detect body landmarks.
But pose detection alone cannot count an exercise.
It can tell Fitlet where a knee, shoulder, or wrist is located, but Fitlet still has to determine whether a movement has started, whether the range of motion was sufficient, and when one repetition is actually complete.
To do that, I built exercise-specific counting logic using combinations of joint angles, landmark distances, movement order, timing, and confidence values.
A squat and a shoulder tap may use the same pose detection system, but the definition of a valid repetition is completely different.
One of the hardest parts was deciding how strict each counter should be.
If the rules are too loose, partial or accidental movements get counted. If they are too strict, normal users may fail because of differences in body proportions, flexibility, camera position, or device setup.
Finding the right balance between accuracy and usability became one of the most important parts of the project.
Design
I also wanted Fitlet to feel like one coherent product rather than a collection of fitness utilities.
I avoided relying heavily on generic templates or ready-made visual assets and tried to keep the map, workout screens, feedback, profile, and mascot consistent in shape, motion, spacing, and visual language.
The mascot animations were also created specifically for Fitlet. I first created the graphical assets as SVGs, then built the Lottie animations from scratch.
These details are small individually, but together they help Fitlet feel more like its own world rather than just a camera-based rep counter.
RevenueCat / Fitlet Pro
Fitlet Pro uses RevenueCat for subscription management.
The app retrieves monthly and annual packages, handles purchases and restores, and checks Pro entitlements through RevenueCat. It is also connected to Fitlet's Firebase-based account system.
Pro includes features such as expanded Coach analysis and more focused workout options.
I tried to use monetization to strengthen Fitlet's main value proposition rather than simply locking basic functionality behind a paywall: the more someone uses Fitlet, the more personalized and useful the experience should become.
Challenges I ran into
The hardest challenge was defining what actually counts as one repetition.
For a relatively simple movement like a squat, knee and hip angles provide useful signals.
For something like a burpee, the movement contains several phases: standing, lowering down, moving into a plank, returning, and standing again. Even deciding which moment should count as the completion of one rep becomes much more difficult.
The system also has to deal with imperfect conditions. A body part may briefly leave the camera frame. Users have different ranges of motion. Camera angles are not always ideal.
Simpler rules are more forgiving but create more false counts. Stricter rules improve validation but can make the app frustrating to use.
I had to make that tradeoff separately across the exercise catalog.
Another major challenge was aligning the detected body landmarks with the camera preview.
Screen aspect ratio, orientation, front-camera mirroring, and image cropping all affect where a detected point should appear on screen. iOS and Android therefore required separate camera and coordinate-handling work.
Accomplishments that I'm proud of
The part I am most proud of is connecting the individual systems into one complete loop.
Choose a workout.
Exercise in front of the camera.
Have reps counted automatically.
Earn FP.
Progress through the map.
Improve a streak or league position.
Come back for the next session.
Pose detection alone could have been a technical demo.
The map alone could have been a game-like UI.
The league alone could have been just a leaderboard.
Fitlet connects them around one goal: making exercise easier to start and giving users a reason to return.
I am also proud that I was able to bring together 29 exercises, real-time pose detection on both iOS and Android, custom counting logic, Coach recommendations, leagues, subscriptions, and original animation into one released mobile app.
What I learned
The biggest lesson was that something as intuitive to a human as saying, “that was one rep,” is surprisingly difficult for a computer.
Knowing where the body is located is only the beginning.
For every exercise, I still had to decide:
- which body parts matter
- how far the user needs to move
- which sequence of movements is valid
- what to do when tracking is temporarily lost
For more complex movements, I also started to see the limits of relying entirely on hand-designed angles and thresholds.
Fitlet currently uses mostly rule-based features designed by hand, but in the future I would like to combine real movement data with machine learning so the system can recognize complete movement patterns more naturally.
I also learned that products designed around consistency are often improved not by one huge feature, but by removing many small points of friction.
Choosing an exercise.
Entering reps.
Saving a record.
Deciding what to do next.
Each step is small, but together they can be enough to stop someone from starting at all.
What's next for Fitlet
Fitlet has only recently launched, so my next priorities are straightforward.
The first is to improve counting accuracy.
I want the system to work more consistently across different body types, movement styles, camera angles, and devices. For more complex exercises, I also want to explore machine-learning-based movement recognition alongside the current rule-based approach.
The second is to grow the number of people actually using Fitlet.
Real usage will help answer the questions that matter most:
- Where do users stop working out?
- Which progression systems actually help people return?
- Which exercises fail most often in real-world conditions?
- Does Fitlet genuinely make starting exercise easier?
Rather than simply adding more exercises, I want to keep improving the core promise of Fitlet:
reduce the decisions required to start, and create a reason to come back tomorrow.
Built With
- avfoundation
- camerax
- expo-router
- expo.io
- firebase
- google-mlkit
- kotlin
- lottie
- reactnative
- reactnative-reanimated
- revenuecat
- swift
- typescript
Log in or sign up for Devpost to join the conversation.