A single screen for the chief pilot and dispatcher. Every active pilot's current status, FAR 117 rolling-window utilization, and next scheduled shift — recomputed on every page load from bookings + flight log.
ON_DUTY · ON_REST · EXHAUSTED · AVAILABLE — one pill per pilot, with the reason. Sort exhausted to the top so the dispatcher fixes the squeezes first.
24-hour / 7-day / 28-day flight-time gauges turn amber at 80% and red at the cap. The 1000-hour year guard rail lives one click away on the pilot profile.
Try to book a pilot past their 117 cap and the schedule mutation throws — server-side, not client-side. Plus a violation message that names the window.
Yes. The duty board computes rolling-window accumulation across 24-hour (8h cap), 7-day (30h cap), 28-day (100h cap), and 365-day (1000h cap) windows for every active pilot. Scheduling blocks any new sim booking that would bust a cap.
Both simulator-booking instructor seat-time and self-logged flight entries roll into the totals. We deliberately exclude cancelled bookings so a misclick doesn't ground your pilot.
Yes — the rosterStatus query takes an optional `at` anchor time. The dispatcher can preview the 0600 picture before the day starts.
When the MULTI_BASE module is enabled, you can filter the duty board by base. Each base has its own FAR 117 window roll-up so a captain commuting between hubs stays cleanly attributed.