All case studies
FrontendFrontend Engineer

SuperPower (ex. WorkoutMe)

A daily micro-workout app for iOS and Android: a one-minute session instead of an hour at the gym, a streak, an activity feed and a leaderboard. One React Native codebase, rated 4.6 on the App Store.

SuperPower (ex. WorkoutMe)

Outcome

4,6
average App Store rating across 559 reviews
350+
guided exercises with video in the catalogue
2
platforms from a single codebase: iOS and Android

The business problem

The product does not fight a shortage of exercises — it fights people quitting in week two. Everything rests on visible progress: how long the streak is, how many workouts the month added up to, what friends make of it. The old profile showed an avatar and a couple of counters, so there was no way to read the trend, and the statistics sat in Firestore separately: user totals, monthly reports and per-day slices in different documents. All of that had to become one screen that opens immediately and stays smooth on low-end Android devices.

My role

Frontend Engineer: I built the progress screen from scratch — the header with avatar and city, the report carousel with a month calendar and a weekly chart, the streak and total-workout counters, the friends row, the gallery of workout doodles and the placeholders for paid SuperPower reports. The screen is written in TypeScript inside a codebase that was still JavaScript at the time, so I also set up the path aliases, typography and shared style mixins the rest of the team then used.

The solution

React Native with Redux and React Navigation, data in Cloud Firestore. Reports load through three independent queries: user totals, the month document behind the calendar, and the last seven days behind the chart. The blocks fetch in parallel, so the screen never waits on the slowest query and paints the header straight away. The carousel renders report cards as they are swiped into view, and RevenueCat handles the SuperPower subscription and access to paid reports. Exercise videos are never streamed mid-workout: on first launch the app downloads an archive from a CDN in the background and unpacks it into the device file system, after which everything plays locally — the download and the unpacking are instrumented with Firebase Performance traces. Builds ship through Fastlane and GitHub Actions; small fixes go out over CodePush without a store review.

Stack

  • React Native
  • TypeScript
  • Redux
  • React Navigation
  • Firebase
  • Cloud Firestore
  • RevenueCat
  • CodePush
  • HealthKit
  • Fastlane