Skip to content
Velocity result screen showing a top speed of 41.4 km/h

Velocity

Clocks how fast you kick a soccer ball, from a phone video.

2026

What it is

Upload a clip of a kick, tap two points a known distance apart, and Velocity tracks the ball frame by frame to report its real-world speed. Log in and it keeps a history of your shots, so you can watch your striking improve.

Built for myself and for Hack Club Horizons.

Strike clocked: top speed, launch speed, and the speed curve over time.

How it works

  • YOLOv8n detects the ball in every frame. Missed frames are recorded as gaps rather than dropped, so later stages know what's missing.
  • Kick detection scans for a sustained speed spike above an adaptive median threshold and returns the launch window.
  • Two-point calibration converts pixels to metres. Top speed is measured inside the kick window, and launch speed comes from a trajectory fit.
  • A FastAPI backend runs analysis as background jobs that the React frontend polls. Accounts use bcrypt and JWTs, and shots are stored in Postgres.
  • The backend runs in Docker on Hugging Face Spaces; the frontend is on Vercel.

Stack

  • YOLOv8n
  • OpenCV
  • FastAPI
  • React
  • TypeScript
  • Postgres
  • Docker

Results

  • A working end-to-end app: upload, calibrate, measure, and keep a history of every kick.
Velocity upload screen
Step 1: drop in a video of the kick.
Velocity calibration screen with two points on a ball
Step 2: set the scale with two points a known distance apart.
Velocity history screen with a personal best
Your shots, with a personal best.