Pitch chart + live Gameday feed for MiLB games. One HTML file, zero dependencies. Data saves on-device (localStorage), per game. Live data straight from statsapi.mlb.com.
- Phone (recommended): push these files to a GitHub repo, enable Pages (main/root), open the URL in Safari, Share -> Add to Home Screen.
- Laptop: open index.html, or
python3 -m http.serverand hit the LAN IP. - Updating an existing deploy: just push over it - the service worker version bump forces phones to take the new build. Old charted data carries forward.
- Bottom tab bar, compact game header (tap to switch games), base-out state + live pulse.
- One-screen charting: press-drag fine-tunes location with the marker riding above your finger, crosshair guides, cancel button, tap the velo number to type it, haptics.
- Full roster + handedness hydration: LHP/RHP on pitchers, bats L/R/S on batters, batter side auto-sets (switch hitters flip off the pitcher's hand).
- Contact sheet adds spray direction (pull/middle/oppo).
- Live tab groups pitches by half-inning.
- Card: per-pitcher scout notes print on the PNG; "all" scope aggregates a pitcher across every charted game; CHASE% added.
- Log: export one game or every charted game as CSV (19 columns).
- WEEK constant in index.html sets the schedule window.
- Backup (JSON) / restore in the Log tab - every charted game + notes in one file. Do this after each game; localStorage is not forever.
- Study > counts: pitch mix and strike% by count situation (first pitch, ahead, even, behind, two strikes).
- Study > ump: call accuracy vs your chart - strikes lost, strikes gifted, biggest miss in inches. 1.4" edge grace so borderline calls score as correct.
- Study > spray: field-view spray chart from your contact tags, handedness-aware, colored by quality, HR ringed. Per batter or all.
- Rolling schedule: no more editing a week constant. Always shows yesterday through next week for your tracked teams.
- Settings (gear, top right): pick any teams across AAA / AA / High-A / Single-A; the schedule follows. Night + Day themes (Day is built for sun-blasted bleachers). Haptics toggle. Replay the intro.
- First-run intro: four quick cards, shown once.
- Undo toast: every committed pitch pops a 3.5s toast with one-tap UNDO.
- Offline: if the schedule can't load, your last charted game opens anyway.
- Manifest/PWA polish, "not affiliated with MLB/MiLB" disclaimer in About.
- Coarse zone mode (Settings): taps snap to 9 honest cells - built for angled seats.
- Due-up line above the zone when live (on deck / in the hole from the feed).
- Pitch-type chips reorder by that pitcher's actual usage; his out-pitch is always a tap away.
- Requests persistent storage from the browser so iOS is less likely to evict your charts.
Upload these six files at the top level of the repo, not inside a folder. Then delete the old backstop-v3 folder and zip. Your URL becomes https://walshja9.github.io/Backstop/ and charted data carries over automatically. Re-add the app to your home screen from the new URL (the old icon points at the old path).
- Demo game (Settings): a full charted sample - two arms, contact tags, ump misses - so anyone can explore Study/Ump/Card without being at a park. One tap to remove.
- Game card: Card tab now has pitcher card / game card modes. The game card is the postgame share: score, pitches charted, strike%, ump accuracy, hard-hit rate, top velo.
- HP umpire name field on the Ump tab; prints on the game card.
- CSV gains a game_pk column (20 columns) for clean joins against MLB data.
- about.html: a landing page - share https://walshja9.github.io/Backstop/about.html when you start showing people. Cached offline with the app.