Trainer Dashboard (Web)

For trainers, a business in a window.

Trainers get a complete operating system on the web — track followers, sessions hosted, participants and ratings, review recent sessions, set their realtime status (Available, Live, Busy, Rest Day, Offline), schedule classes, and go live with one click. Status updates propagate instantly through Supabase channels.

https://fitlive-eta.vercel.app/dashboard
FitLive — trainer dashboard with live status, sessions and clients
— Trainer dashboard · Live status, sessions & clients
Public Site (Web)

Train. Live. Win.

The public site is where clients discover FitLive — connect with elite trainers for real-time workout sessions, join live classes, and track progress. Built with Next.js 14 and Supabase, with live trainer counts and session stats pulled straight from the database.

https://fitlive-eta.vercel.app
FitLive — homepage: Train. Live. Win. (live trainer & session counts)
— Homepage / Next.js + Supabase
Mobile App

The whole studio, in their pocket.

The native mobile app puts the trainer's world on their phone — go live in seconds, track followers, sessions and rating at a glance, set realtime availability, manage clients, and review recent sessions. Built with React Native and Expo, sharing the same Supabase backend as the web app.

FitLive — mobile app home: Go Live, stats, clients and recent sessions
— Mobile app · Home (React Native / Expo)
The Challenge

Live fitness, built for real networks.

Most live fitness platforms assume a US-grade home internet connection. FitLive ships to a market where mobile data is unreliable and broadcast latency really matters — a trainer's cue needs to land before the rep is over.

We needed full-HD WebRTC video with adaptive quality, realtime trainer status that doesn't poll the database every second, and a two-sided product that works on web for trainers (who often broadcast from a laptop) and Android for clients (who follow along on a phone).

The Build

One backend, two surfaces, real-time everything.

Next.js 14 powers the web app and trainer dashboard. React Native with Expo handles the Android client. Both talk to the same Supabase backend — auth, profiles, sessions, follower graph, ratings, and a wallet/credits ledger ready for billing integration. LiveKit handles the WebRTC layer with adaptive bitrate, so streams degrade gracefully instead of dropping.

The status system is the unsung hero. Five states (Available, Live, Busy, Rest Day, Offline) propagate through Supabase Realtime channels so a client browsing trainers sees updates the instant they change — no refresh, no polling. When a trainer hits "Go Live," followers get a push notification within seconds.

  • LiveKit WebRTC
    Full-HD video with adaptive bitrate, chat, and mute/cam controls baked in.
  • Realtime status system
    Available, Live, Busy, Rest Day, Offline — propagated through Supabase channels.
  • Two-sided, two-platform
    Trainer-on-web, client-on-Android — same Supabase backend, role-based UI.
  • Push notifications via Expo
    Followers get pinged the instant their trainer goes live.
  • Wallet & credits ledger
    Billing scaffolding ready to plug into Paystack or any payment processor.
  • Profile photos in Supabase Storage
    Upload from the mobile client with progress and validation.