KDOV Scheduler — Guide
For supervisors · 436 OSS Tower
← Back to Scheduler
KDOV Pattern Operations Scheduler
Internal coordination tool for Tower Training Team
8
Time Blocks
3
AC / Block
24/7
Coverage
WHAT IS THIS

The KDOV Scheduler coordinates pattern operations between visiting units and Dover AFB Tower. Pilots submit pattern requests through a public mirror form. You (the supervisor) review, approve, or reject those requests through this internal scheduler.

Both apps share a backend database, so requests appear in real-time and email notifications are sent automatically when status changes.

DAILY WORKFLOW
1
CHECK PENDING TAB
Start your shift by reviewing the Pending tab. The badge shows how many requests are waiting for your decision.
2
APPROVE OR REJECT
For each request, decide based on slot capacity, conflicting traffic, and operational considerations. Approval sends a confirmation email automatically. Rejection requires a reason that gets sent to the pilot.
3
MARK CERT WATCH (IF APPLICABLE)
If a controller is being evaluated today, click + Add on the Cert Watch banner so other supervisors know.
4
MONITOR THE SCHEDULE
Throughout your shift, the Schedule tab shows the current day's bookings with full details. Use Prev/Next to view other dates.
QUICK REFERENCE
⏱ TIME BLOCKS

Eight 2-hour blocks per day, labeled A-H. Each block covers a UTC time range plus the local equivalent. Default capacity is 3 aircraft per block.

🎯 STATUS BADGES

Pending awaiting your review
Confirmed approved booking
Rejected not approved

📧 EMAIL BUTTON

Every booking card has a 📧 Email button that opens your default email app pre-filled with all booking details. Useful for follow-up.

🎤 VOICE INPUT

Click the Voice button to add bookings by speaking. Say callsign, aircraft, flight rules, date, and time block.

THE SCHEDULE TAB

The Schedule tab shows all bookings for a single date, organized into 8 time blocks. Blocks display in Zulu (UTC) time with local time below.

Navigating dates

  • Use ‹ Prev and Next › buttons to step day by day
  • Click the date label in the center to open a date picker for jumping to any date
  • The page remembers the last date you viewed

Block status colors

  • Open — block has space available
  • Full — block at capacity (red border)

Adding a booking manually

Click + Add on any block to create a booking directly. Fill in callsign, aircraft, unit, flight rules, and contact info. New bookings created here are auto-confirmed.

💡 Override capacity — when adding to a block already at capacity, check the "Override capacity" box. The booking will be marked with an Override badge so it's clear it exceeds normal limits.
READING A BOOKING CARD

Each booking displays in a row with these columns:

  • Status badge — Confirmed, Pending, or Rejected
  • Callsign — primary identifier (largest, bolder)
  • Aircraft — type (e.g., C-17, C-130)
  • Unit — visiting organization
  • Flight rules — VFR / IFR / TAAD / NVD
  • Actions — Approve/Reject (if pending), Email button
  • Reference number — KDOV-XXXX-XXXX format
  • Submitted timestamp — when the request came in (Zulu)
THE PENDING TAB

This tab shows ALL pending requests across all dates, sorted with most urgent first. The amber badge in the tab bar shows how many are waiting.

Approving a request

Click ✓ Approve. The request immediately becomes confirmed, and an automatic email is sent to the pilot's POC with the confirmation. The booking moves to the Schedule tab.

Rejecting a request

Click ✕ Reject. A modal appears asking for a reason. Be specific — the pilot will receive your reason in their email.

  • Good: "Block at capacity. Try 0800-1000 instead."
  • Bad: "Denied."
⚠️ Approval is not instant cancellable. Once approved, the email goes out immediately. If you need to reverse, you'll need to manually contact the pilot or use the cancel function.

Email button on every card

Even on the Pending tab, you can click 📧 Email to compose a manual reply. Useful when you need to ask for clarification before approving.

CERT WATCH BANNER

The amber Cert Watch banner sits above the schedule on the Schedule tab. Use it to flag when a controller is being evaluated for certification on the displayed date.

Why use it

  • Other supervisors see at a glance "today is a watch day"
  • Helps with shift handoffs (incoming supervisor knows context)
  • Reminds you to keep traffic flowing for the trainee's evaluation

Adding a watch

1
CLICK + ADD ON THE BANNER
The Cert Watch banner appears above the schedule blocks. Click + Add to open the entry modal.
2
SELECT THE POSITION
Choose from LC, GC, FD, APP/DEP, ASSISTS, ARRIVAL, or CD.
3
ENTER 2-LETTER INITIALS
Type the trainee's initials (e.g., RC, JS). The field auto-uppercases. Click Save.
💡 Multiple watches per day are supported. Add as many as needed — e.g., morning LC for one trainee, afternoon GC for another. Each appears as its own amber chip.

Removing a watch

Click the ✕ on a chip to remove it. Confirmation is required before deletion.

Per-date storage

Cert watches are tied to a specific date. Switch dates with Prev/Next and you'll see only that date's watches. The banner is empty (dashed border) when no watches exist for that date.

PRIVACY

Cert watches are internal only — they do NOT appear on the public mirror form. Pilots submitting requests do not know about them.

STATS DASHBOARD

The Stats tab provides analytics across all bookings. Useful for briefings to leadership, justifying tool value, or understanding traffic patterns.

What you'll see

  • Lifetime / YTD / This month — total confirmed bookings, three time horizons
  • Confirmed / Pending / Rejected / Cancelled — request status breakdown with percentages
  • Average response time — how fast you typically approve or reject after submission
  • Bookings per month — 12-month trend chart
  • Busiest time blocks — which 2-hour windows see the most traffic
  • Top visiting units — top 8 organizations
  • Top aircraft types — top 8 aircraft
  • Cert watches per month — evaluation activity over time

Refresh button

Stats cache the most recent load. Click ↻ Refresh to pull updated numbers from the database.

Print button

Click 🖨 Print to open a clean black-on-white version optimized for paper or PDF printing. Use this for briefing handouts.

Export CSV button

Click ⬇ Export CSV to download a structured CSV file with all the data. The filename includes today's date. Open in Excel or Google Sheets for further analysis.

💡 Stats only count confirmed bookings. Cancelled and rejected requests are excluded from totals so the numbers reflect actual operations.
UNIT ROSTER

The Unit Roster tab is a reference list of visiting units, their callsigns, home bases, and aircraft types. Use it to look up unfamiliar callsigns or verify unit information.

Search

The search box at the top filters by callsign, unit name, or aircraft type. Type any partial match.

Multi-callsign units

Some units operate under multiple callsigns (e.g., LIFTR/MOOSE/BASCO/VOLT). These display together in the callsign column, wrapped to fit.

Layout

The roster uses a grid layout: callsign | unit code | location | aircraft type. All columns are centered for visual consistency.

SETTINGS

The Settings tab has a small number of operational controls.

Capacity per block

Default is 3 aircraft per 2-hour block. Adjust if your operational situation changes (e.g., reduced staffing, special operations). Changes apply immediately to all dates.

Light / Dark mode

Toggle between dark mode (default, optimized for night ops) and light mode (gray background, optimized for day shifts in bright tower cabs). The theme button (top right) is amber when light mode is active.

💡 Theme persists across sessions. Your choice saves to browser storage and stays selected until you change it.
FREQUENTLY ASKED QUESTIONS
The site is blocked on my .mil workstation. What do I do?
Use the workers.dev URLs instead: scheduler-v2.kdov-scheduler.workers.dev. These are pre-approved on Air Force networks. Same code, same data, different URL.
I approved a request by accident. Can I undo?
There's no built-in undo. The approval email goes out immediately. You'll need to manually email the pilot to clarify, or use the cancel function on the booking card to mark it cancelled and notify them.
A request is for a date in the past. Can I still approve?
Yes, the system doesn't prevent approving past-date requests, but it usually means there was a delay. Consider following up with the pilot to confirm they still want it on a different date.
The Email button doesn't open Outlook on my .mil computer.
Some .mil networks restrict mailto: links. As a fallback, manually copy the booking details from the card and create a new email in Outlook directly.
Can I delete old bookings to clean up the database?
Not from the UI. Database cleanup requires SQL access to the Cloudflare D1 console. Contact the system maintainer (RC) for cleanup operations.
The login form doesn't respond after a recent update.
This usually means a deployed code change broke the JavaScript. Open browser DevTools (F12) → Console tab → screenshot the red error. Then roll back to the previous deployment via Cloudflare's Deployments tab.
How do I add a new visiting unit to the roster?
The roster is currently hardcoded. Adding new units requires a code change. Contact the system maintainer to add new entries.
Where is my data stored?
All bookings and cert watches are stored in a Cloudflare D1 SQLite database on Cloudflare's edge servers. Email automation goes through Resend. The system runs on a personal Cloudflare account dedicated to this project.
What if RC leaves Dover AFB?
A handover plan is needed before that happens. Account credentials, domain renewal, and ongoing maintenance need to transfer to another supervisor or migrate to .mil-approved infrastructure (Microsoft 365, Power Platform).