See the jump
in the numbers.

sideOut turns one side-view phone video into a full biomechanical readout — height, reach, timing — on your own machine.

runs on your laptop · no cloud · no account · open source

Annotated jump: pose skeleton with take-off and landing flags and a live metric readout
POSE · LOAD → TAKEOFF → LANDINGFLIGHT 0.63 S

Reach, to scale

0 m1 m2 m3 mmen's net 2.43 mtouch 2.93 mstanding reach 2.44 m+0.49 m
2.93m
touch height

Flat-footed you reach the net; at the top of your jump you clear it by 50 cm.

The box score

jump 1 of 1 · calibrated
Jump height0.49m
Touch height2.93m
Countermovement depth0.13m
Loading time0.42s
Approach velocity1.8m/s
Arm-swing lead0.22s

How it works

01 capture

Side-view video

An ordinary phone clip. Treated as source — never copied or committed.

02 pose

Keypoints

MediaPipe tracks 33 body points per frame, on real timestamps.

03 physics

Metrics engine

Detect the jump, then pure, unit-checked physics functions.

04 output

This page

Annotated video, metrics JSON, and charts — regenerated from data.

Under the hood

69 tests, 87% coverage — assert ground-truth recovery, not just "it runs"
GitHub Actions CI: lint, type-check, tests on every push
Fully typed and mypy-clean; pure, side-effect-free metric functions
Reproducible env (uv + lockfile), one-command Docker
Handles phone reality: variable frame rate, rotation, dropped frames
Validated: error analysis + force-plate method comparison

Python 3.11 · MediaPipe · OpenCV · NumPy · pandas / parquet · SciPy · Typer · pytest · ruff · mypy · GitHub Actions · Docker