In progress2026Personal
HeroFit
A pixel-art workout app: every set counts, you climb 30 ranks per exercise, clear dungeons and face a boss every week.
- Since
- 2026
- Stack
- Expo
- React Native
- TypeScript
- Zustand
- i18next
HeroFit is a workout app dressed up as a pixel-art RPG. Its tagline: every set lands a blow. Climb the ranks, clear the dungeons, become a legend. Your workouts are dungeons, your lifts earn ranks, and there’s a boss waiting at the end of the week.
It’s a real Expo app in progress, for iOS, Android and the web from one codebase. The screenshots come from its web build.
How it plays
- Create your hero. A handle, a sprite, a fighting style (brute force, hypertrophy, endurance or all-rounder) and your arsenal: the equipment you have and your max load, so the app only suggests exercises you can actually do.
- Headquarters. The dungeon of the day (a session: chest and triceps, four exercises), the boss of the week (beat 4×8 at 72 kg to bring the Guardian of the Bench down), a campaign map, and weekly missions worth XP.
- 30 ranks per exercise. Ten tiers from Bronze to Legend, three steps each. Your rank comes from a composite score: load × reps × consistency (sessions per week, over four weeks).
- Training. Log each set with steppers for load and reps, then a rest timer kicks in. At the end: XP, total tonnage, ranks gained and badges unlocked.
- Friends. Leaderboards per lift, a guild with a shared weekly goal, a badge race between friends and a feed. You can also play as a lone adventurer, with no account and everything kept on the phone.
How it’s built
- Expo and expo-router, React Native on phones and react-native-web in the browser. Every screen has to work on both.
- Real web markup. One
<h1>per screen, real buttons and lists, keyboard access and screen-reader labels. - A small pixel kit of shared components (buttons, panels, meters, sprites, scanlines) built on one set of tokens.
- Zustand for the few global states, with the hero saved between launches. i18next in French and English, French first.
- No backend yet. All content is mocked in typed data shaped like a future API, so plugging in a real one touches one layer.





