A web-based tool for generating and managing defensive baseball game schedules. Built with Vue 3 + Vuetify 3 + Vite.
Build your roster by setting up the players, which positions you like them in or don't. Then generate game lineups where you lock in a pitcher and catcher for a number of innings, the algorithm will figure everything else out. All players should sit in order without sitting twice, if it doesn't work out you can manually adjust the rotation by dragging and dropping players within a given inning and the algorithm will readjust the rotation automatically, or. In "MANUAL" mode indicated by the orange button, the algorithm will not continue to adjust, it will just take your inputs via drag/drop.
- Roster management — Add players with jersey numbers and position priorities (high / could / off) for
1B,2B,3B,SS, andOF - Automated schedule generation — Most-constrained-first position assignment with a seeded PRNG for variance across runs
- Leniency slider (1–5) — Controls how strictly position priorities are enforced when filling slots
- Manual P/C assignment — Assign pitchers and catchers per inning before generating; inning chips disable across slots to prevent double-booking
- Absent players — Mark players unavailable for a given game; they are excluded from scheduling and P/C dropdowns
- Fair sit rotation — Players sit in fewest-sits-first order; ties broken by who sat earliest
- Drag & drop editing — Swap players between positions and innings directly on the schedule table
- Algorithm mode — Pins the swap and regenerates forward from that inning to maintain fairness
- Manual mode — Raw cell swaps with no regeneration
- Sit fairness warnings — Alerts when the rotation violates the "no one sits twice before everyone sits once" rule
- Save / Load / Delete schedules — Schedules are persisted to
localStoragewith full state including P/C assignments and absent players - Prev / Next navigation — Step through saved schedules from the schedule table toolbar
- Saved Schedules page — List view with clickable name links and double-click to view
| Framework | Vue 3 (Options API) |
| UI | Vuetify 3 |
| Build | Vite 4 |
| Icons | Material Design Icons (CDN) |
| Persistence | localStorage |
npm install
npm run devApp runs at http://localhost:5173 (or next available port).
npm run build # production build → dist/
npm run dev # preview production build- Roster — Add players and set their position priorities using the colored buttons on each card
- Home — Set the number of innings and leniency, mark any absent players, assign pitchers/catchers per inning, then click Generate Schedule
- Drag & drop — Rearrange the generated table; toggle Manual mode for raw swaps
- Save — Name and save the schedule; revisit it anytime from the Schedules page
src/
App.vue # Single-file component — all UI and logic
main.js # Vue + Vuetify bootstrap
public/
index.html
vite.config.js