This syncs your data to Google Sheets so it works across all your devices. Complete these steps once:
Go to sheets.google.com → create a new blank spreadsheet named Band Booster Scheduler.
In the spreadsheet click Extensions → Apps Script. Delete all default code, paste in BandBoosterBackend.gs, set your passphrase on line 10, Save.
In Apps Script click Deploy → New deployment → Web app → Execute as Me → Access Anyone → Deploy → copy the URL.
In your Vercel dashboard → your project → Settings → Environment Variables, add: APPS_SCRIPT_URL = the /exec URL API_KEY = your passphrase
In Vercel → Deployments → Redeploy.
Click below to test the connection.
Band Booster Scheduler
Manage volunteer assignments for each event
Google Sheets sync
The connection is configured via Vercel environment variables.
Checks the connection and pulls the latest data down from Google Sheets, overwriting what's shown in this browser. Safe — doesn't touch the sheet.
Read-only connection test. Checks that Vercel and Apps Script are configured correctly and reports what's wrong if not. Makes no changes.
Only affects this browser — deletes the locally cached copy of the data and reloads the page. Your Google Sheet is never touched by this. There is no button anywhere in the app that deletes data from the Sheet itself; deleting a schedule, volunteer, or job only removes that one item, and even that requires confirmation first.
Schedules
Assign
Trucks
Configuration
History
Create new schedule
Non-Game Events skip 1st/Halftime/2nd Half in General — just buses, the 4 specialty roles, and your configured non-game job list.
Away games use bus assignments. Home games skip buses entirely and use stadium march positions instead.
First row is headers. Two columns: Name, Date (date format YYYY-MM-DD). Imported this way are always created as Away Game events.
Events
Drag volunteers from the pool or any position row — drop onto a job to append, onto a specific row to insert, or back to the pool to unassign.
Assign import to a schedule
Choose a future schedule:
This event's roster & jobs
Available to everyone. Manage who's signed up, the master roster, and this specific event's jobs, halftime jobs, and slot count here.
Master roster
Click any cell to edit inline.
First
Last
Email
Phone
This week
Admin
CSV import — assign to a schedule
Add volunteer manually
Jobs for this event only THIS EVENT ONLY
Editing here changes only the event shown above — not the template new events are created from, and not any other event you've already created. (There's a separate "Global job template" further down the page, admin-only, that controls what brand-new events start with.)
Job title
Notes
Slots
Assigned
Halftime jobs for this event SEASON TEMPLATE
Name
Field Position
Target slots
Assigned
Global settings — admin only
Add to global job template TEMPLATE
Global job template
This is the starting list every brand-new event is created with — it does not affect any event that's already been created (use the blue "Jobs for this event only" box further up the page for that). Click any cell to edit inline. Position #1 is always the lead.
Job title
Notes
Slots
Add to season halftime template TEMPLATE
Season halftime template
Used by every game that hasn't been customized — one-off changes for a single game belong in the blue "Halftime jobs for this event" box further up. Set a target to track how many you still need to assign, and a Field Position for where that job will be positioned — both optional. Click to edit inline.
Name
Field Position
Target slots
Assigned
Away game buses / Home game march positions
Away games use the bus dropdown; Home games use stadium march positions instead — no bus assignments. Each has its own count.
1st & 2nd half jobs
These appear as dropdown options for 1st half and 2nd half assignments on each volunteer row.
Name
Jobs for non-game events
Used only when you create a "Non-Game Event" schedule. Those events skip 1st/Halftime/2nd Half and the regular game job list — just buses, the 4 specialty roles, and this list.
Job title
Notes
Slots
Admin
Admin volunteers ("Game Day Admin" in the CSV) are imported directly, just like other volunteers — no separate list to maintain here. Admin status applies across both modules, but each module tracks its own role/bus assignment independently — an admin can be assigned in Logistics and General for the same event at the same time.
CSV import category mapping
Shared between Logistics and General. Defines which text values in column 36 of the volunteer CSV route to which role. Matching is case-insensitive and ignores extra spacing.
Text in column 36
Routes to
Password management
Passwords are stored hashed in the AppPasswords tab of your Google Sheet. Existing passwords cannot be viewed. Leave a field blank to keep the current password unchanged.
RoleNew passwordConfirm
Logistics
General
Admin
Add volunteer to this week
Pick from master roster volunteers not already on this schedule, or add someone brand new.
Add new volunteer
Creates them on the master roster and adds them to this week's roster.
Print assignments
Eagle 1 & Eagle 2 load planner
Floor 1 is the open deck for the front ensemble. Floor 2 is shelves for battery and cased winds. Trombones go in pull-out drawers on one truck. Set the layouts to match the trailers, then drag instruments onto a load plan.
Events are automatically saved to history the day after they occur. Click any field to edit inline.