Skip to main content
Lane GarnerWeb and Mobile Developer

Rhythm Fit

Offline-first workout tracker with a streaming AI coach

At a glance

Role

Solo design + engineering, app and backend


Stack

  • React Native + Expo
  • TypeScript
  • Redux Toolkit
  • NativeWind
  • Node.js + Express
  • Supabase
  • OpenAI (streaming)

Overview

Rhythm Fit is a workout tracker and AI coach built for real gym conditions: basements with no signal, mid-set glances, sweaty thumbs. It's a React Native / Expo app where every mutation lands in local storage instantly, a sync middleware queues changes and reconciles with the server when a connection returns, and the entire app is fully usable with no backend at all.

Weekly planner (7-day view)
Workout execution (set-by-set timer)
AI Coach streaming a multi-week program

Offline-first, for real

The data flow is: user action → Redux dispatch → local state → AsyncStorage save → background API sync. Failed syncs queue and retry; app boot hydrates from disk first, then reconciles with the server. The backend (Node/Express + Supabase) is genuinely optional: local-only mode is a supported configuration.

That constraint shaped the UX everywhere: nothing ever spins waiting for a network, and sync state is ambient rather than modal.

A streaming AI coach

The AI coach plans workouts, answers training questions, and generates multi-week programs. Responses stream as NDJSON so the plan renders as it's written. Streamed text is easy to get wrong for screen readers, so the coach announces progress and respects reduced motion.

Accessibility as a feature

WCAG 2.2 AA touch targets, labels, and roles across the app's interactive elements, with acceptance criteria of their own. You use a gym app with shaky hands and half your attention; accessible design is just good design here.

The iOS build follows Apple's Human Interface Guidelines where it matters: a home-screen widget and Live Activity built in Swift, and reduced motion respected throughout the app.

Also in the box

  • Supersets with back-to-back guided execution
  • A global workout timer (count up/down) that survives backgrounding
  • Stats, streaks, per-exercise history, and PRs
  • Plate-math and common lift calculators
  • Onboarding with spotlight overlays (progressive disclosure, not a slideshow); light/dark theming

← All projects