Compete ยท Journal ยท Trace ยท Form
VirtualLanes is a phone-first bowling companion. Tap in the frames you actually bowl and race a simulated opponent who reacts to the same lanes as you โ then journal what you saw, decided and adjusted, so your lane read gets sharper every session. One game, one history.
Local-first PWA. Your games stay on your phone โ no accounts, no cloud, works offline.
Bowl your real frames and compete against a chosen rival, frame by frame. Tap the pins you knock down; the rival bowls the same breaking-down lanes.
Record your real shots โ what you saw, what you decided, what happened. Annotate any frame of a live game to sharpen your lane read.
Film a shot and auto-track the ball โ laydown, breakpoint, pocket entry and speed, with a top-down path of every throw.
Film your approach โ on-device pose tracking reads your swing plane, posture and footwork, step by step. Nothing leaves your phone.
Rivals aren't random numbers โ rev rate and ball speed drive results, oil breaks down as the game goes on, and ball changes matter.
Build a roster of opponents, each with their own style and scout report. Pick your poison before every bowl-off โ or go solo for stats.
Track your balls, switch mid-game with one tap, and see how each one performs across patterns and centres.
Save the houses you bowl at and their patterns, so every game is logged against the conditions you actually faced.
Average, strike %, spare and makable %, and breakdowns by pattern, ball and centre โ across every mode, in one shared history.
No accounts, no uploads, no analytics. Everything lives on your device, and you can export a backup file anytime.
Open the app in your phone's browser, then add it to your home screen โ it opens full-screen and works offline after the first load.
Open virtual-lanes.pages.deviPhone (Safari): Share โ Add to Home Screen. Android (Chrome): menu (โฎ) โ Install app.
It's a static SvelteKit build โ deploy it to any static host, or just run it locally.
git clone https://github.com/michael-borck/virtual-lanes
cd virtual-lanes
pnpm install
pnpm build # static site in ./build
No backend, no database โ the build output is the whole app.