CubeSturm
A speedsolving training planner — schedule practice sessions, track PRs, upload and annotate solve videos, and drill algorithms from any custom CSV alg set.
- Spring Boot
- Vue.js
- Java
What it is
CubeSturm is a training planner for speedsolving — built to manage the parts of practice that are easy to lose track of once you’re doing them by hand: what to practice, whether you’re actually improving, and where your mistakes are coming from.
Features
- Training scheduling — plan and manage practice sessions instead of solving at random
- PR tracking — keep a running record of personal records over time
- Video review — upload solve videos, annotate them, and go back through past solves to spot recurring mistakes
- Algorithm trainer — drill any algorithm set: upload a CSV of algs and the trainer works with whatever set you give it, not just one fixed method
Stack
Spring Boot on the backend, Vue.js on the frontend.
Video Streaming Pipeline
One of the most fun features I implemented was a video annotator. However, there is more to the story than meets the eye. Uploaded solve videos go through an FFmpeg formatting step on the backend, in which the video is reformatted and scaled into a consistent format/resolution for storage. Then they are served back with HTTP range-request support, so the video player can seek and stream instead of downloading the full file before playback starts.

- Browser uploads the raw solve video to the backend.
- FFmpeg reformats and scales it into a consistent storage format — no relying on whatever codec/resolution the source file happened to be recorded in.
- The processed file is saved to disk.
- When played back, the
<video>element sendsRangeheaders; the backend responds with206 Partial Contentfor just the requested byte range instead of the whole file — so seeking and scrubbing don’t require re-downloading everything before them.