What is Stride?

Stride is a cross-platform mobile fitness app that transforms solo running into a social experience. Beyond just tracking your route, Stride lets you join group sessions, post and accept dares, complete missions, claim territory zones, and compete on live leaderboards, all backed by real-time data.

Inspiration

We wanted to answer a simple question: what if your run was actually fun? Most fitness apps treat running as a solitary grind. We were inspired by the energy of group sports and the addictiveness of social challenges, and wanted to bring that into everyday exercise.

What We Learned

  • Designing real-time multiplayer flows (sessions, chat, leaderboards) on mobile requires careful thought around Supabase RLS policies and subscription management.
  • React Native's New Architecture and the React Compiler introduced exciting performance wins but required navigating some early-adoption rough edges.
  • Balancing feature depth with a clean, intuitive UX is genuinely hard, we cut and rebuilt several screens mid-hackathon.

How We Built It

Stride is built with Expo (SDK 54) and React Native, using expo-router for file-based navigation. The backend is entirely Supabase, handling auth, the database, row-level security, and media storage. Maps are powered by react-native-maps with Google Maps on both iOS and Android. Animations use React Native Reanimated 4.

The app is structured around a src/screens layer of 40+ feature screens, a shared component library, React contexts for global state (feed, map, missions, run stats, theme), and a custom hooks layer.

Challenges

  • Row-level security: Getting Supabase RLS right for sessions and messaging took significant debugging, we ended up writing dedicated diagnosis docs mid-build.
  • Camera + video pipeline: Coordinating expo-camera, expo-av, expo-video, and expo-media-library across iOS and Android with the New Architecture required careful branch management.
  • Auth flow: Persisting scan data through the Scan --> Auth --> Portal sign-up flow without losing state was trickier than expected.

Built With

Share this project:

Updates