Skip to content

Schedule grid & coach shifts

The schedule grid at /coach/schedule is a spreadsheet view spanning many events at once. Use it to:

  • Plan headcount across upcoming events (which weeks are light, which are heavy?)
  • See who’s RSVP’d across multiple groups/calendars side-by-side
  • Assign coaches to cover events (admin only)

Every coach gets a personal My shifts view at /coach/my-schedule showing only events they’ve been assigned to.

The grid layout

  • Left column — athletes, banded by group with a header row per cohort, then below the divider, coaches.

  • Top row — events in chronological order, each labeled with day, time, type, and group(s). Hover an event header and you get its full name — U16 GS — Copper — plus the calendar. Tap to jump to its edit page.

    The hover carries the full title because staffing depends on it: what kind of session, and where, decides who you need on it.

  • Cells in the athlete section — show the RSVP status:

    • Y (green) — Yes
    • N (red) — No
    • (gray) — No response
  • Athlete cells are read-only by design. To change an RSVP, open the event from the column header.

  • Cells in the coach section — show availability and assignment. Tap to cycle (admin only), or use the bulk tools below:

    • · (gray) — Not asked
    • (green) — Assigned, i.e. rostered
    • ? (amber) — Available (maybe), the bench
    • (red) — Not available

Assigning staff in bulk

Tapping cells one at a time is fine for a fix-up, but not for staffing a season. Three ways to go faster, all admin-only:

  • Fill a row — the +all button next to a coach’s name assigns them to every event currently visible. Clear empties the whole row.
  • Fill a column — the +all button under an event header assigns every visible coach to that event. Clear empties it.
  • Select a block — click one cell, then shift-click another. Every cell in the rectangle is selected and an Assign selected / Clear selected bar appears at the top of the grid.

The filters are what bound “visible” — set the date range, calendar and group first, then fill. Every action confirms with the exact number of coach-shifts it’s about to change before it does anything.

A block selection is applied as a cross product of the rows and columns it touches. For a clean rectangle that’s exactly what you picked; if you shift-click something ragged, the confirmation count tells you what will actually change. Check that number.

Headcount + coverage totals

  • Per group — each band ends with its own Yes / total row, so a mixed Ability window shows U16 and FIS separately instead of one undifferentiated number.
  • All groups — the row under the last band totals every athlete in view.
  • Bottom of coach section — count of assigned coaches per event.

Filtering the grid

  • Date range — starts today and runs eight weeks. Quick buttons sit beside it: This week, 4 weeks, 8 weeks, Season. Or type your own From and To — picking a From moves the To with it, so a single day is two taps.

    Season isn’t the default because events are columns here: a whole season is a very wide table. It’s one button when you want it.

  • Calendars — pick one or more to combine. Ticking a calendar also ticks its groups, so you can see exactly what you’ve selected. Untick individual groups afterwards to narrow further.

  • Groups — narrow further. If you skip this, you get every group in the selected calendars.

  • You’ll always see yourself. Admins stay on the coach list whatever the filter, so you can roster yourself on any group.

  • Filter selections are stored in the URL — bookmarkable, shareable.

Assigning a coach to an event

  1. Go to /coach/schedule as an admin.

  2. Filter to the date range and calendars you’re planning.

  3. In the coach section, find the coach + event cell.

  4. Tap the cell to cycle it: not asked → available → assigned → not available → not asked.

    Promoting someone off the bench is a single tap — ? straight to — because that’s the move you make most when coaches have already filled in their availability. Assigning someone who never answered takes two taps, or use +all / block-select to do it in bulk.

Staffing a season

The workflow this is built for:

  1. Put the events in.
  2. As part-timers tell you their availability, mark them maybe or not available.
  3. Coaches can answer for themselves on My availability — their answers land in these cells. You can still set them by hand for anyone who tells you by text.
  4. When you need bodies, select the block and hit Promote maybes — every maybe in the selection becomes assigned, in one action.
  5. Leave the remaining maybes alone. They’re your bench if someone drops out.
  6. Mark not available for anyone you’d never call on, so they stop appearing as an option.

Only a roster change pushes to the coach. Moving someone to maybe or not available is your own bookkeeping — nobody gets “you have been moved to maybe” on their phone. Promoting them does push, because that’s a real shift.

When you assign:

  • The coach gets a phone push (if they have push enabled and haven’t opted out at /coach/settings → Phone notifications → "Shifts I'm added to or removed from").
  • The event shows up on their /coach/my-schedule view.
  • A chip on their /coach/today shows “Your shifts today & tomorrow”.

When you un-assign, they get a “shift removed” push (same opt-out applies).

Coaches: where you’ll see your shifts

  • /coach/my-schedule — full list of your assigned events for the next 4 weeks.
  • Chip on /coach/today — when you have a shift today or tomorrow, an orange chip appears at the top with a count and a link to the full list.
  • Phone push — fires the moment an admin adds or removes you (if enabled). Opens straight to /coach/my-schedule.

Tips for season planning

  • Tap 4 weeks for a month-at-a-glance, or set From to a Sunday and let To follow, then push it out to four weekends.
  • Tick both Ability and Age Class if you’re staffing across both — an athlete in more than one group still shows once (their home group is the determinant).
  • Tap an event header to open that event’s page; Edit is a button there.

What this isn’t (yet)

  • No recurring availability templates — a coach can’t declare “I’m always free Tue/Thu evenings”; they answer event by event on My availability.
  • Nothing tells you when a coach answers — their maybe/can’t shows up in the grid, but no notification fires. Check the grid when you’re staffing.
  • No coach attendance — the grid shows who’s assigned to cover an event but doesn’t track whether they actually showed up. (If we ever need that, we’d add a separate roster like for athletes.)
  • No notes on assignments — a cell holds a state, not a sentence. If you need context (“Sarah covering for Bob”), use the event’s coach note or Telegram for now.