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




