Inspiration

I always knew I wanted to build something of my own around something I was passionate about. The stair stepper became that thing.

I originally got into it because I was tired of just lifting. I love basketball and wanted better cardio so I could last longer in pickup games.

Then I became obsessed. I used the stair stepper almost every day for three years, going from barely lasting five minutes to a personal best of 6,300 steps in an hour. Over that same period, my VO2 max went from 46 to 63.5.

But tracking my progress was frustrating. I started by writing everything down, then manually logging workouts in an app, and eventually trying my Apple Watch. Manual logging was tedious. Automatic tracking was inaccurate. The apps I tried treated the stair stepper as just another exercise on a list, even though it had become the foundation of my training.

When I started thinking about app ideas, I kept coming back to that frustration. I hadn't done much market research. I just knew I hadn't found what I wanted, and I wanted to build something that worked for me. Even if someone else had already made a stair stepper app, I wanted to see if I could make something better.

I wanted automatic tracking I could trust, progress I could see, and a community of people who loved climbing as much as I did.

So I started building Ascend.

What it does

With Ascend, you can get on a stair stepper, put on compatible headphones, and start climbing. The motion sensors in your headphones track your steps automatically.

Those steps can take you up the Empire State Building or another iconic landmark. As you climb, you can see other climbers' progress in real time. Suddenly, there's someone to catch and a finish line to reach.

That competition carries beyond a single workout, with weekly, monthly, yearly, and all-time leaderboards. You can also follow structured routines or simply climb and track your effort.

Over time, your workouts become a history you can look back on: personal records, achievements, completed landmarks, and shareable recaps. Heart rate monitor connections and Apple Health integration help bring the rest of your workout data together.

I wanted to give people more reasons to get on the stairs—and something to show for the work once they stepped off.

How I built it

Ascend started in 2023 as a semester-long project for an iOS course. That first version was simple: log in and manually enter how many steps you climbed. I still have screenshots, and it looks nothing like the app today.

The idea stayed with me, but this past year is when I did most of the work to turn it into the app I'd wanted. During the Shipathon, I finally submitted Ascend for App Review and got it onto the App Store.

Automatic tracking wasn't part of that original class project. The idea came later, during a conversation with my fiancée. I said that if someone could solve stair stepper tracking well, there could be a real business behind it. But I still had to figure out how.

I considered creating my own hardware, but I knew nothing about hardware development. Before going down that route, I wanted to see what I could do with devices people already had.

Wrist tracking hadn't worked well for me, especially when holding the rails. So I started thinking about what else I wore during a workout.

What about my headphones? I was already wearing them every time I climbed.

I looked into it and discovered that compatible Apple headphones had accelerometers and gyroscopes. They could detect motion. The question was whether I could turn that motion into a reliable step count.

I used Claude to help develop the tracking algorithm, then repeatedly walked up my apartment stairwell, exported motion data, and refined it. My regular stair stepper workouts became opportunities to test it, find out where it failed, and try again.

Once I could count steps, I kept thinking about what else I wanted during my workouts. What if those steps took me up the Empire State Building? What if I could see someone ahead of me and try to catch them? Tracking solved the original problem, but those ideas made me want to keep building.

At first, whenever I had an idea, I'd jump straight into coding it. Then I'd get it on the screen and realize it wasn't what I had pictured. The feature worked, but using it felt awkward, or the design didn't look right. So I'd rebuild it, sometimes several times, figuring out what I actually wanted along the way.

Eventually, I started giving myself more room to figure that out before writing code. I used Lavish to explore different designs, and now I use ChatGPT images to help visualize ideas. I'll talk through a screen, try a few directions, and keep refining it until I can picture how someone would actually use it during a workout.

That's how Ascend grew beyond a step counter. The climbs, leaderboards, routines, and progress screens each went through their own version of that process. Looking at the app now, I can still remember the versions of those screens that never made it—and what each one taught me.

Challenges I ran into

The biggest challenge was figuring out how to count steps in the first place.

I'd already tried tracking from my wrist, and it hadn't worked well for me. Creating my own hardware was unfamiliar territory. Before I could build automatic tracking, I needed to find something that could detect the movement reliably.

The headphones were the breakthrough. Discovering that I could access motion data from something I already wore gave me a direction to pursue. Then I had to figure out whether that data could consistently tell me when someone took a step.

Early on, even nodding along to music could count as climbing. I repeatedly tested, exported data, and refined the algorithm, trying different climbing styles, including leaning on or holding the rails. Finding the sensors made tracking possible; testing and iteration turned that possibility into a working feature. It also led me to add calibration and step-accuracy feedback.

Other problems showed up simply because I was using the app. I'd finish a climb and forget to stop my Apple Watch workout. Now I had two recordings of the same effort with different start and end times. Bringing heart rate data into Ascend meant figuring out which readings belonged to the climb, rather than just importing the entire workout.

Adding competition brought another set of questions. What happens if someone removes their headphones halfway through? What counts as a completed climb? Which tracking sources should qualify for a leaderboard? A step count becomes a different responsibility when it determines someone's rank. I had to work through those rules alongside the racing features.

Even getting through the paywall became a challenge. One App Review rejection happened because reviewers couldn't get past it: my own purchase validation was filtering out the sandbox purchases used during review. After launch, I discovered another gap. A purchase could succeed through the subscription service while my backend still treated the user as locked out. Buying access and actually receiving it had to work as one experience.

And throughout all of this, I was still learning how to design the app. Every new feature had to fit into something a person could understand and use while exercising. Getting that right took far more iteration than I expected.

Accomplishments that I'm proud of

I'm proudest that I stuck with Ascend and finally built the confidence to ship it.

I still have screenshots of the class project from 2023. You logged in, typed in your steps, and that was basically it. The idea stayed with me, and this past year I put more work into it than ever before.

During the Shipathon, I took it through App Review and launched it on the App Store. After so much time building, testing, and rethinking things, other people could finally download it and use it in their own workouts.

Ascend now has real users and real subscriptions. Seeing something that started as a manual tracker for myself become something other people choose to use is what means the most to me.

What I learned

For a long time, I was both the person building Ascend and the person testing it. That helped because I cared deeply about the problem, but it also meant I kept improving the app through my own assumptions. Once other people started using it, they gave me feedback I never would have come up with myself. I wish I had put it in their hands sooner.

I also spent much more time thinking about building the app than about how people would find it. Getting onto the App Store was a milestone I'd been working toward for years. But once it was there, I still had to give people a reason to notice it, download it, and come back.

I didn't even know what a funnel was when I started. Now I think about the whole journey: someone seeing a video, visiting the App Store page, downloading Ascend, getting through onboarding, and completing their first workout. Each part affects whether they ever experience the thing I spent all that time building. For my next app, I'll start thinking about distribution much earlier.

The biggest lesson, though, was learning to keep going without already knowing how everything would work.

I've always seen myself as an athlete first. I didn't start this feeling like a great programmer. Setting up the release pipeline took weeks. The paywalls took weeks. The tracking algorithm took weeks, and Apple Watch support is taking weeks right now.

Training had already taught me how to show up for something I wasn't good at yet. Building Ascend made me apply that same patience somewhere else. The confidence came from working through those problems, one at a time.

What's next for Ascend

For years, most of my attention went into getting Ascend built. Now I want to learn from the people using it and give more stair stepper users a reason to join them.

My immediate focus is growing an active racing community. Competition was one of the things I wanted most when I started, and that part of Ascend depends on people showing up, setting times, and giving each other something to chase.

I'm also developing Apple Watch support so people who don't own compatible headphones have another way to track their steps. Longer term, I'd like to explore other wearable integrations and workout sharing with platforms such as Strava.

I started by wanting a better way to record my own workouts. I want Ascend to become the place people go to see how far they've come, find their next challenge, and meet other people who keep coming back to the stairs.

Built With

  • astro
  • chatgpt
  • claude
  • cloud-firestore
  • corebluetooth
  • coremotion
  • fastlane
  • firebase
  • firebase-authentication
  • firebase-storage
  • firstmate
  • github-actions
  • healthkit
  • ios
  • lavish
  • liveactivities
  • mapbox
  • mixpanel
  • revenuecat
  • storekit
  • superwall
  • swift
  • swiftdata
  • swiftui
  • typescript
Share this project:

Updates

Submission history