Skip to content
All Projects
Project·Building

FormAI - Fitness Koçu

Flutter fitness coaching app with real-time pose detection, AI voice guidance, and a 30-day personalised training system.

The model is on the device. The cloud is for billing, not for breath.

Tech Stack

Mobile

  • Flutter 3.22
  • Dart
  • flutter_riverpod
  • go_router

On-Device AI

  • Google ML Kit

Backend

  • Supabase

Identity & Billing

  • RevenueCat

Observability

  • Sentry
  • PostHog

Overview

Why

Form-coaching apps that round-trip pose data to the cloud burn battery, leak privacy, and rely on connectivity. The best cloud architecture is sometimes knowing when not to use the cloud — pose detection runs on the device's NPU, the user's video never leaves the phone, and the experience works on a plane.

How

Google ML Kit tracks 33 body landmarks at 30 fps through the device camera. Joint-angle math evaluates rep quality against reference biomechanics; incorrect form triggers corrective audio cues via flutter_tts. Supabase + RevenueCat carry the parts that genuinely need a server (auth, subscription state, store integration). Riverpod 3.3 manages app state. The home-screen widget + iOS Live Activity surface workout status without opening the app.

Trade-offs

On-device ML caps the model size. Joint-angle heuristics are coarser than server-side pose-grading; for the rep-counting + form-cue use case, they're sufficient. The store-listing optimisation toolchain is a separate React + Vite codebase — would have been cleaner integrated, but the build cycles for app store screenshots are completely different from the Flutter dev loop.

Gallery

FormAI - Fitness Koçu screenshot 1
FormAI - Fitness Koçu screenshot 2
FormAI - Fitness Koçu screenshot 3
FormAI - Fitness Koçu screenshot 4