Portfolio case study

PaceSync: Fitness and race management platform

A full-stack race management and runner engagement platform that connects live run orchestration, on-demand training, subscriptions, rewards, media recording, and real-time mobile tracking.

Name changed to respect NDA.

Project scope

Product engineering, Flutter mobile app, web console, backend APIs, real-time race systems, audio infrastructure, and operations support

4
role-specific experiences
3
connected product surfaces
2
live and on-demand run modes
6
audio fallback paths

Timeline

Multi-platform modernization, feature expansion, and reliability hardening

Live running events needed more than a basic tracker

The product had to coordinate trainers, runners, race schedules, live audio, location data, subscriptions, rewards, and post-race history while staying reliable on mobile networks.

  • Race status, runner positions, pace, distance, and leaderboard data needed to stay synchronized in real time
  • Audio coaching and music had to continue through waiting, live, background, and recovery states
  • Premium access depended on memberships, promo codes, race tags, and multilingual runner-facing flows
  • Operations teams needed admin tools for races, banners, recordings, runner records, diagnostics, and migration work

A connected race operations platform for trainers and runners

PaceSync brings the mobile runner experience, trainer/admin console, real-time data layer, media pipeline, and API foundation into one coordinated product system.

  • Flutter mobile workflows for scheduled live races, solo on-demand sessions, history, medals, sharing, and membership
  • Admin console tools for race setup, live control, runner correction, banners, promo codes, recordings, and diagnostics
  • Firebase-backed live race synchronization with targeted listeners, polling fallbacks, and runner leaderboard safeguards
  • Recorder and storage services for capturing live audio streams and publishing replay-ready media assets

Product surfaces

What the platform brought together

The work spanned core product operations, daily user workflows, data-heavy coordination, and resilient platform management.

Live race control

Trainers can configure, start, pause, resume, finish, and monitor races while runners receive live state changes on mobile.

  • Race creation with trainer assignment, distance targets, scheduling, tags, banners, and stream URLs
  • Live dashboards for participant distance, pace, calories, altitude, elapsed time, and position
  • Firebase synchronization for race status, streaming URL changes, runner data, and leaderboard counts

Runner mobile experience

The mobile app supports live sessions, solo training, profile history, medals, sharing, settings, and multilingual UX.

  • Flutter feature modules using Riverpod, GoRouter, JWT-aware API access, and reusable app services
  • Live run and on-demand run screens with GPS route painting, distance, pace, calories, and result summaries
  • Past run history, monthly activity, medal collection, social sharing, profile editing, and notification preferences

Audio, media, and replay

A dedicated audio and recording layer keeps sessions engaging and gives completed races a replay path.

  • Priority-based stream selection across Firebase dynamic URLs, recorded files, live URLs, config APIs, and defaults
  • Foreground and background playback patterns for lock-screen continuity and minimized app sessions
  • Headless recording service with FFmpeg processing and S3 or Cloudflare R2 upload for race archives

Membership and operations

The platform includes monetization, access control, admin content tools, diagnostics, and data migration support.

  • In-app purchases, monthly and yearly plans, promo codes, Club-gated runs, and tag-based access control
  • Banner management, trainer and runner administration, push notifications, surveys, quotes, and settings
  • Cache controls, health checks, structured logs, Firebase data explorers, and migration tooling

Buyer priorities

What mattered most to the people evaluating the platform

Prospective buyers want to know whether the work solved real workflow, adoption, reliability, data, and operations problems. These priorities shaped the product decisions.

Live-session confidence

A race platform succeeds only if trainers and runners can trust live state, audio, distance, pace, and leaderboard data during the event.

  • Firebase synchronization kept race status and runner data moving in real time
  • Polling and targeted reads helped protect the experience on unstable mobile networks
  • Leaderboard fallbacks reduced blank or misleading live race states

Runner engagement

The mobile app needed to keep runners coming back through history, medals, sharing, subscriptions, and solo training content.

  • On-demand sessions expanded the product beyond scheduled live events
  • Medals, monthly history, and shareable results supported repeat engagement
  • Club access and promo codes gave the business flexible monetization paths

Trainer operations

The admin workflow had to support race setup, audio changes, runner correction, recordings, diagnostics, and campaign-style content updates.

  • Race control tools supported start, pause, resume, finish, and status reconciliation
  • Recording and banner workflows reduced support dependence on developers
  • Diagnostics and cache tools helped operations teams investigate live issues

System model

How the platform connects roles, workflows, and product surfaces

The product architecture brings every role into the same operating model, with shared data moving cleanly between web, mobile, media, and notification layers.

Four roles, one running ecosystem

Trainer, runner, club member, and administrator workflows share the same race, membership, media, and analytics foundation.

Live race signal flow

Race setup moves through live sync, mobile tracking, audio updates, results, rewards, and archived recordings.

Three surfaces, shared platform

The mobile app, admin console, and recorder service connect through API, real-time, storage, and notification layers.

Technology

The Stack We Used And Why

The stack section is written for buyers who need to understand the product architecture, operational trade-offs, and long-term maintainability of the system.

Mobile app

Used for the runner-facing product where live tracking, background audio, subscriptions, history, and cross-platform delivery matter.

FlutterDartRiverpodGoRouterFirebaseIn-app purchases

Admin console

Used for trainer and administrator workflows that need race control, participant monitoring, media management, and operational dashboards.

React SPAREST APIsFirebase listenersRole-based accessOperational dashboards

Backend APIs

Used to coordinate authentication, race data, subscriptions, media records, migrations, and operational APIs across the product.

Node.jsExpressSequelizeMariaDBMongoDBJWTBCrypt

Real-time systems

Used for live race state, runner metrics, streaming URL changes, leaderboard counts, and notifications that need to reach devices quickly.

Firebase Realtime DatabaseTargeted listenersPolling fallbacksOneSignal

Media and storage

Used for resilient live audio recording, replay assets, banners, and CDN-backed delivery across public and app surfaces.

FFmpegWgetAWS S3Cloudflare R2CDN-backed media delivery

Infrastructure

Used to keep database, cache, API, recorder, reverse proxy, and deployment workflows maintainable as the product evolved.

Docker ComposeNginxRedisWoodpecker CI.NET Core modernization layer

Why Flutter For Mobile

The mobile product needed one cross-platform implementation for live race, on-demand, profile, medal, and subscription workflows.

  • Flutter kept iOS and Android experiences aligned during migration
  • Riverpod and GoRouter supported feature-based architecture and predictable state flow
  • Background audio and Firebase services could be centralized behind reusable app services

Why Firebase For Live Sync

Race sessions needed low-latency updates for status, runner metrics, streaming URLs, and leaderboard context.

  • Realtime Database supported live race state updates across many mobile clients
  • Targeted listeners reduced the cost of watching oversized race nodes
  • HTTP fallbacks and polling gave the app a backup path when listeners lagged

Why Dedicated Media Services

Audio is a core part of the product, so recording, playback, fallback, and replay workflows needed their own operating layer.

  • FFmpeg and recorder services handled stream capture and duration correction
  • S3 and Cloudflare R2 separated media delivery from application servers
  • Fallback stream selection kept sessions usable even when one source failed

Delivery

How the product came together

The work moved from domain modeling to core platform delivery, mobile adoption, and operational hardening.

1

Model live race behavior

Map race status, runner metrics, trainer controls, memberships, media, and recovery states across mobile and admin surfaces.

2

Modernize the product core

Build shared API, console, mobile, storage, and synchronization patterns that could support both live and solo sessions.

3

Harden real-time reliability

Add targeted Firebase reads, polling fallbacks, playback continuity, leaderboard safeguards, and operational diagnostics.

4

Expand engagement and operations

Layer in rewards, subscriptions, promo codes, banners, recording management, reporting, and migration tooling.

Operational depth

What made the platform usable after launch

The strongest case studies are not only feature lists. They show how the system is operated, monitored, governed, and improved when real users depend on it.

Live race diagnostics

The platform includes tools for investigating live race state, Firebase synchronization, cache behavior, and runner data integrity.

  • Debug panels and Firebase reconciliation workflows
  • Cache inspection and per-key clearing endpoints
  • Health checks for database and recorder service connectivity

Audio continuity

The product treats audio as a first-class session layer across waiting, live, background, and replay contexts.

  • Six-level stream fallback strategy for live and recorded audio
  • Foreground and background playback services for mobile continuity
  • Recorder service for capturing and publishing race replays

Migration and modernization

The system evolved while preserving production behavior across legacy and modernized surfaces.

  • Flutter migration from the original native mobile experience
  • Firebase to MongoDB migration tooling for large race documents
  • .NET modernization layer introduced alongside existing services

Results

The measurable and observable lift from the work

The strongest improvements are the ones a buyer can connect to daily work: fewer disconnected tools, safer operations, clearer workflows, and more reliable product behavior.

2 modes

Expanded Training Model

The product supports scheduled live races and solo on-demand training instead of a single run-session model.

6 fallbacks

More Resilient Audio

Audio selection moved from one fragile source to a layered fallback model covering Firebase, recordings, live URLs, config APIs, and defaults.

3 surfaces

Connected Operations

Mobile app, admin console, and recorder service workflows were connected through shared APIs, real-time data, storage, and notifications.

40 GB+

Migration Readiness

Firebase-to-MongoDB migration planning and tooling prepared the platform for large race data migration and split-storage operations.

Outcome

A stronger operating system for fitness and race management platform

The platform reduced tool fragmentation and gave each role a clearer path from live activity to day-to-day action.

A unified running platform instead of separate race control, mobile tracking, membership, media, and admin tools

More resilient live race sessions through real-time synchronization, fallback reads, and focused listener patterns

A mobile experience that supports scheduled live events, solo training, history, medals, sharing, and subscriptions

Operational tooling for recordings, banners, runner administration, diagnostics, cache management, and data migration

FAQ

Frequently Asked Questions About PaceSync

Answers about the fitness and race management platform scope, platform model, technology choices, operational workflows, and related build patterns.

What Kind Of Fitness Platform Does PaceSync Represent?

PaceSync represents a race management and runner engagement platform with live race orchestration, mobile tracking, audio streaming, subscriptions, rewards, recordings, and admin operations.

Why Was Real-Time Architecture Important For This Product?

Live races depend on current status, runner position, distance, pace, audio source, and leaderboard information. The architecture used real-time listeners, targeted reads, and fallback polling to keep those states reliable.

How Did The System Improve Over Time?

The product expanded from core live race workflows into on-demand training, richer history and medals, membership access, recording management, diagnostics, migration tooling, and more resilient audio playback.

Can NextPage Build Similar Platforms For Wellness Or Event Businesses?

Yes. The same product pattern can support fitness communities, training programs, corporate wellness, event platforms, race organizers, and content-led membership products.

Related services

Build a similarly ambitious product without starting from a blank page.

We can help scope the web, mobile, AI, media, and operating layers needed for your own platform.

Start a project inquiry