Inspiration
Instructions from US Soccer. Meant to help users with game analysis.
What it does
A Streamlit app that loads SkillCorner tracking data, lets you scrub frame-by-frame, and export clips as GIF/MP4. It mirrors a video analyst’s workflow while preserving off-ball context from raw data.
How I built it
Language: Python 3.10+ — rich data/plotting ecosystem, fast prototyping. UI: Streamlit for stateful widgets and rapid analyst-facing interfaces. Pitch rendering: streamlit-soccer (primary) with Plotly fallback to ensure portability when the widget isn’t available. Data loading: kloppy for standardized football data access (SkillCorner Open Data). Imaging/encoding: Pillow + imageio (GIF everywhere), imageio-ffmpeg + ffmpeg (MP4). Caching: On-disk cache under app/data_cache/ + Streamlit caching decorators to avoid re-downloads. Project structure: Clear separation of concerns — loaders (I/O), transforms (normalization), render (encoding), main (UI/state).
Challenges we ran into
Allowing the user to download clips to their local device.
Accomplishments that we're proud of
Producing a fully functional app that includes all the features we imagined.
What we learned
How to load data, update the UI between frames, and allow for exporting.
What's next for Aadi FC's Clip Tracking App
Integrate player numbers into the downloadable GIF/MP4.
Log in or sign up for Devpost to join the conversation.