Elijah Oliver Larsson Back to portfolio

Independent product / 2026

RepQuest

A fitness app where real training powers an RPG

I designed and built a fitness app where workouts, activity, nutrition, and recovery shape companion growth and battles.

RepQuest Today screen showing daily fitness actions and companion progress
RepQuest Training screen showing an active strength workout
RepQuest battle screen showing Aurexion facing Prism Mote
Nymbloom in its luminous final form
  • Product design
  • Fitness UX
  • HealthKit
  • Game systems
  • Flutter
  • iOS
Status
Live on TestFlight
Role
Product design, UI, game systems, and Flutter development

The design problem

I wanted fitness progress to have a second life beyond charts and streaks. But combining a practical fitness tool with an RPG creates a tension: if the game appears inside every health flow, logging becomes slower; if it sits too far away, the connection to real activity stops feeling meaningful.

A rule for the product

The fitness app should still make sense if the game disappeared. Workouts, activity, meals, and recovery stay familiar and useful on their own. The RPG reacts to those actions instead of interrupting them.

Designing fitness first, game second

The most frequent actions had to stay close to familiar fitness patterns. Starting a workout, checking activity, logging food, or reviewing recovery should not require understanding the RPG first.

The game reacts to the fitness app, not the other way around. People log and review health information through familiar tools first; RepQuest then translates it into XP, mastery stats, and battle readiness.

Training
Strength and cardio logs
Activity
HealthKit movement and energy
Nutrition
Meals, calories, and macros
Recovery
Sleep, readiness, and trends

Turning different kinds of progress into one system

A single XP bar would make “do more” the dominant strategy. I split progression across Power, Agility, Recovery, and Focus so different parts of fitness can matter without pretending they are the same thing.

Dreadveil in its starter form

Dreadveil

The baseline form before training begins to change the companion.

Starter form
Dreadveil Warden evolution

Dreadveil Warden

The first evolution rewards accumulated progress without requiring a specific training style.

Unlocks at level 16
Dreadveil Crown evolution

Dreadveil Crown

The final level-based evolution keeps the main progression path understandable and predictable.

Unlocks at level 36
Dreadveil in its final divine form

Divine form

The end state is different: it requires balanced mastery instead of simply earning more XP.

Power, Agility, Recovery, Focus

The endgame rewards balance, not just volume. Levels give the player a clear progression path, while the Divine form asks them to develop Power, Agility, Recovery, and Focus together.

4
Fitness pillars
4
Mastery stats
4
Progression forms
6
Campaign bosses

Giving fitness progress somewhere to go

I did not want the reward for exercising to be another badge. The RPG is a separate play space where accumulated progress becomes decisions through abilities, team composition, and campaign routes.

Groveguard companion Emberbill companion Nymbloom companion

Train → develop → prepare → battle → progress. Fitness creates progression; the game gives it somewhere to go without sitting inside the workout itself.

RepQuest app icon

Where RepQuest is now

RepQuest is the most complete product I have built so far. I designed the fitness experience, progression, and battle systems, then developed the iOS app in Flutter.

The hardest design problem was not adding game mechanics; it was deciding where they should stop. Keeping the fitness layer clear while giving the RPG enough depth became the main constraint across the product.

Built with
Flutter, Riverpod, Drift, HealthKit, StoreKit, Codemagic
Current status
Live on TestFlight
Next focus
Usability testing, progression balance, visual consistency