
<aside>
📐
PlyoMetrics is a Flutter mobile application for coaches and athletes to measure jump performance from high-speed video. It replaces unreliable automatic pose detection with precise manual frame selection, turning takeoff, contact, and landing frames into transparent, reproducible performance metrics.
View the source code on GitHub
</aside>
What I Build and Own
- Product architecture: Design the measurement workflows, domain models, persistence layer, state management, and mobile user experience.
- Video analysis: Build high-speed video capture, trimming, FFmpeg-based frame extraction, metadata probing, and frame-by-frame selection tools.
- Sports metrics: Implement countermovement jump (CMJ), fatigue/readiness, reactive strength index (RSI), and single-leg asymmetry testing.
- Athlete management: Organize athletes into groups, support multi-athlete test sessions, and maintain per-athlete baselines and histories.
- Measurement quality: Model frame-level uncertainty, propagate error into calculated results, and detect statistical outliers before saving baselines.
- Data visualization: Present historical CMJ, fatigue, RSI, and asymmetry results through dashboards and evolution charts.
- Quality and delivery: Maintain unit, provider, persistence, and widget tests alongside English and Spanish localization.
Measurement Workflow
- Record or import a high-speed jump video.
- Probe the video stream to determine its actual frame rate and extract timestamp-aligned frames.
- Select the exact takeoff, contact, and landing frames manually.
- Calculate flight time, contact time, jump height, RSI, and frame-resolution uncertainty.
- Review repeated attempts, automatically identify outliers, and save a representative session result.
- Compare new measurements with the athlete's baseline and track changes over time.
Core Performance Tests
CMJ Baseline
Repeated countermovement jumps establish an athlete's reference jump height. PlyoMetrics averages valid attempts, excludes robust statistical outliers, and reports propagated measurement uncertainty.
Fatigue and Readiness