Inspiration

I walk for exercise and the apps I tried were either built for gyms or just looked too generic and weren't motivating to use. I wanted today's walk to feel like progress I could see without making the app overly complicated. That led me to WalkHero.

What WalkHero is for

WalkHero is for everyday walkers who want a habit they can see. Onboarding asks what you are aiming for and what gets in the way, then suggests a Walking Goal you can live with. Home shows how today is going with steps, distance, calories, and a streak, using Apple Health or Health Connect.

When you want the walk itself, you start a GPS session, pick a gaming-themed map that feels fun, and keep the route and route shape on your phone. It also includes a 'hero' that you can customize and widgets that motivate you and let you see your streaks, stats on your home screen.

How I built it

I built it in Expo and React Native so iOS and Android could share one product. Health, location, billing, and widgets stay native. Convex is a small backend. Mapbox draws the live walk. Routes and health data stays private on your phone.

Challenges I ran into

Apple Health and Health Connect disagree on history and background access. So I kept the same screens and let each platform keep its own permission flow.

People lock their phones mid-walk, so if a GPS session were to stop in the background then they would lose their progress and it wouldn't be a great user experience. To solve this iOS uses background location. Android uses a foreground service, a Stop notification, and local checkpoints. Widgets snapshot on the device and refresh when the app opens.

What I learned

I also realized each platform needed native health, location, and billing under the same screens. Copying iOS onto Android made permissions, widgets, and Play review worse.

That led me to keep routes and health history off the server. If I was going to ask for location, I wanted it to stay on the phone.

Share this project:

Updates

Submission history