Inspiration

Earlier this year, I trekked the towering mountains of Uttarakhand in North India, and I was deeply inspired by their majesty and the challenge they present. Standing at the base of a summit, the peak feels impossible to reach, but with each step, you start to realize how far you've come. It’s not just a physical challenge—it’s a mental one. After reaching the summit, I felt an incredible sense of accomplishment, and I wanted to create something that could inspire that same feeling. I envisioned a fitness app that wasn’t just about tracking numbers or closing activity rings, but about experiencing the journey, pushing limits, and feeling the triumph of reaching new heights. That experience sparked the idea for a fitness app that goes beyond numbers and routines. I wanted to capture the journey and the sense of achievement along the way. The concept of conquering a virtual mountain as you progress in your fitness journey became the perfect metaphor for personal growth and accomplishment.

What it does

Mount Fitness is a mountain themed fitness app, that turns your *regular workout progress into virtual mountain climbing experience. * The features include - 1) Over 50 unique challenges, each representing a real mountain with its own specific fitness metrics and goals 2) Beautifully designed 3D models of actual mountains, created using topological data and rendered in Blender for authenticity 3) Fitness tracking that translates workout achievements into progress up each mountain 4) A medal system that serves as a reminder of completed mountain challenges, including the time taken to conquer each peak

How we built it

I built Mount Fitness using Swift and leveraging several key frameworks:

  1. SceneKit for 3D rendering of the mountain
  2. HealthKit for fetching user's health data
  3. CoreLocation for obtaining the user's location
  4. OpenWeatherMap API for real-time weather data
  5. SwiftUI and UIKit for the user interface
  6. We used a USDZ file to import a high-quality 3D model of Mount Everest
  7. Reality Composer Pro for adding textures and Shader Graphs
  8. Created a unique set of challenges through researching trekking websites and trekker's experiences

Challenges we ran into

The challenge I ran into, at the start of this app, was how to turn this vision into reality, I wasn't planning on using 3D models initially, but I had picked up on blender to experiment with a few Vision Pro projects. My plan was just to use images to show the challenges, but I thought what would really do justice to the experience I want to inspire is showing the towering and beautiful mountains. After spending days on finding out how I can do it, without the laborious process of modelling each mountains by hand, also completing this within the deadline, I figured out, I can just find a height mapper of the earth and leverage that data to automate building some 3D models in blender.

I started the Ship-a-ton challenge comparatively later, after the second half of August, and at several moments I felt it's too much work to finish this before deadline, I wanted to build out custom paths to the top of each mountain, and several Shader Graphs that I can code up, so the experience is different at each step of the fitness challenge.

I felt it's too much work, and felt demotivated to finish it, took a pause of a couple of days. And I looked back at the initial vision I wrote down for the app, I felt motivated again by it. This is what my represents, when the going gets too tough, you have to focus on one step at a time, and before you know it, the journey will be in front of you.

Accomplishments that we're proud of

To start off, being able to convert the earth's height map, into individual 3D model of mountains which somewhat accurate was a huge bump for me.

Being able to find a way to translate health data into several fitness challenges, and inspiring a new way of looking at fitness challenges.

To be completely honest, the biggest thing I'm proud of, is the fact that I took up this challenge and was able to finish the first version of my app in time, after breaking down and almost giving up several times.

link

What we learned

The most meaning lesson I learned is to be consistent, set an achievable goal and a deadline to work towards it. I've been trying to go indie for more than 2 years (I've had the Apple Developer Account) but never released any of my project, I feel my ideas start off on a high, and keep researching and prototyping and I feel if I don't do it right, I won't release it. The ideas seem too ambitious to put in the time and energy, and the project end up abandoned. My biggest lesson is that it's okay to shake off some features, not make the first version of the app as the best one, the important bit is to just ship.

It's been quite a monumental moment in life, because I can tell people I'm an indie dev, instead of saying "I'm trying to go indie" for the past few year.

What's next for Mount fitness

For now, I'll be taking a break after a successful Ship-a-ton sprint, I'm travelling to Barcelona from 23rd - 29th September, hoping to meet fellow developers there!

But starting from the first week of October, there's still so much to build in this app before the end of this year, that I had initially envisioned. I want the user's to really get that experience that I felt, where the virtual mountains are awe-inspiring. For now, I'm just using the raw 3D models. I want to focus on building more textures and custom shaders, so the mountains take a new shape every step the user takes in their journey. I'd like the user to actually visualise themselves on that virtual mountain, adding support for ARKit, and drawing up a path on the 3D mountain which is dynamic to the user's progress. I want to build group challenges, where competitors can keep each other motivated.

Imagine trekking to the top of Mount Kilimanjaro and you can see all your friends taking different paths to the top and competing with them to be the first one on top

Adding localisation for all major languages. I want to leverage custom based rendering to add many options for themes in the app.

Built With

  • blender
  • healthkit
  • realitycomposerpro
  • realityview
  • scenekit
  • swiftui
  • xcode
Share this project:

Updates