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. There are no automated pilot emails — every official pilot notification (approve / reject / cancel) is sent by a supervisor from their AF Outlook account using the Copy HTML button (see the Pending tab section for details).

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. Approving or rejecting updates the status instantly. The pilot is notified via email sent manually from your AF Outlook using the Copy HTML button — no automated emails go to pilots.
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 the booking moves to the Schedule tab. The pilot is notified by email — see "How emails actually reach the pilot" below.

Rejecting a request

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

  • Good: "Block at capacity. Try 0800-1000 instead."
  • Bad: "Denied."

How emails reach the pilot

All pilot-facing emails are supervisor-initiated. The system does not send automated emails to pilots — this is intentional, so every official notification comes from a tower address with no NON-DOD SOURCE warnings.

Send the official notification (every status change)

  1. After approving, rejecting, or cancelling on the booking card, click the Copy HTML button.
  2. A fully formatted email is copied to your clipboard (banner, status pill, full details, your reason or notes if any).
  3. Open a new email in your AF Outlook. The pilot's POC email is shown on the booking card.
  4. Paste, verify the recipient, and send from your .mil account.
  5. The pilot receives a branded message with no NON-DOD warning, no delivery uncertainty.
⚠️ Approval doesn't trigger an automatic email. The status is updated in the database (and visible to the pilot via reference-number lookup), but no email is sent until you click Copy HTML and send it from Outlook. If you caught a mistake before sending the Copy HTML, you can simply not send it — or use the cancel function on the booking card to formally reverse the decision.

Email button on every card

You can click 📧 Email to compose a manual reply at any time — useful for clarifying questions before approving. The Copy HTML button generates a branded status email; the Email button just opens a blank compose window pre-addressed to the pilot.

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.

HISTORY TAB

The History tab is the system's record of everything that has happened. It has two sub-views: Pilots Directory and Audit Log. Switch between them with the toggle at the top of the tab.

PILOTS DIRECTORY

A deduplicated list of every unit that has ever submitted a pattern request. One row per callsign, aggregating data across all of their submissions.

What you see for each entry

  • Callsign — primary identifier.
  • Unit — the unit designation (e.g., 437 AW).
  • Aircraft — most recent aircraft type they flew.
  • Phone — most recent POC phone number (click to dial on iPad/phone).
  • Email — most recent POC email (click to open a new message in Outlook).
  • Total / Confirmed / Rejected / Cancelled — lifetime request counts.
  • Last submission — date of the most recent request.

Why this is useful

When a new pattern request arrives and you've never worked with the unit before, the directory gives you instant context: have they flown here before? How many times? When? With what aircraft? This also functions as an operational contact database — if you need to reach a unit after the fact (post-flight feedback, schedule change, follow-up question), the phone and email links are one tap away.

Search

The search box filters by any field: callsign, unit, aircraft type. Type any partial match.

AUDIT LOG

A reverse-chronological timeline of every state-changing action across the entire system. Each entry shows the timestamp, the event type, the actor (pilot or supervisor), the request reference (if applicable), and contact info for follow-up.

Events captured

  • submitted — pilot submitted a request via the mirror form.
  • approved — supervisor approved a pending request.
  • rejected — supervisor rejected a request (reason captured).
  • cancelled — pilot self-cancel or supervisor-cancel (reason captured if supervisor).
  • capacity_changed — supervisor changed the max capacity setting.
  • password_changed — supervisor changed the scheduler password (the value itself is NEVER logged).
  • cert_watch_added / cert_watch_removed — supervisor added or removed a controller evaluation flag.

Contact info inline

For request-related events, the entry shows a clickable email (✉) and phone (☎) link for the pilot's contact info. This lets you reach out directly from the audit log without having to look up the request separately.

Filters

You can filter the audit log by event type, callsign, or unit. Useful when researching a specific incident or building a quarterly report.

Why this exists

Accountability and traceability. When a question comes up later ("Did we approve that flight last Tuesday?" "Who rejected that one?" "When did the capacity change?"), the answer is one search away. The audit log also supports historical reporting and demonstrates operational value to leadership.

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: tower.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, but no email is sent automatically — the pilot is only notified once you click Copy HTML and send it from Outlook. So if you caught the mistake before sending, just don't send the Copy HTML email. To formally reverse the approval, use the cancel function on the booking card with a brief reason and then send a Copy HTML email explaining the change.
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. The best workaround is the Copy HTML button on the booking card — it copies a fully formatted email (banner, status pill, full details) to your clipboard. Open a new email in Outlook manually, paste, set the recipient (visible on the card), and send.
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).