An unofficial, real-time operations dashboard for United Airlines — built by flyers, for flyers.
→ Live Dashboard · 📋 Changelog · 🎨 Design System · ☕ Support the Project · 💡 Suggest a Feature · 𝕏 Follow @theblueboard
The Blue Board is a fan-built operations dashboard that lets you see United Airlines like an ops center would — live flight positions, hub schedules, fleet data, delays, weather, and stats, all in one dark, data-dense interface.
Not affiliated with United Airlines, Inc. This is an independent project by an aviation enthusiast.
📡 Live Ops
Real-time map tracking 600+ United flights, updated every 30 seconds. Filter by hub, toggle longhaul routes, overlay NEXRAD weather radar. Hub status sidebar shows departure/arrival counts and identifies the busiest hub. Search any flight by number, tail, or route. Great circle route lines show flight paths with city names.
Server-side disruption scoring across all 9 hubs — cancellations, delays (30m/60m), diversions, and FAA ground stops. AI-powered delay risk engine uses 8 signals (actual delay, FAA programs, weather, hub OTP, time-of-day, inbound aircraft, hub risk profile) to score delay risk 0–100. Click any risk badge for a natural language AI explanation powered by Claude. Preloaded automatically on page load with 5-minute server-side caching.
📅 Schedule
Departure and arrival boards for all 9 UA hubs (ORD, DEN, IAH, EWR, SFO, IAD, LAX, NRT, GUM). Filter by status or aircraft type. Equipment swap detection flags when a plane type changes. On-time performance stats. All times in airport-local timezone.
✈️ Fleet
Complete database of 1,078+ mainline aircraft — searchable and sortable by type, registration, seat config, WiFi, and IFE. Starlink tracker for 258+ equipped aircraft with sortable columns and filters by fleet, type, and operator. Live fleet status correlates airborne flights with the database. 19 dedicated fleet type pages (737 MAX 9, A321neo, 787-9, etc.) with full aircraft registries, structured data, and cross-type navigation.
FAA NAS delay and ground stop alerts, METAR observations with plain-English explainers, NEXRAD radar overlay, and hub health indicators. Each hub gets a unified card with conditions, visibility, wind, ceiling, and current delay status. Ops Impact Assessment goes beyond standard flight categories to flag real operational risks — snow, gusts, freezing precipitation, thunderstorms — even when conditions are technically VFR. Radar map renders instantly; weather data loads in parallel via batched API calls.
📊 Stats
Live fleet utilization by aircraft type (airborne vs. total), flight phase distribution (climb/cruise/descent donut chart), hub-to-hub traffic flow matrix, top active routes, fleet delivery timeline with stacked histogram colored by aircraft family, and Starlink coverage metrics. All live data updates every 30 seconds.
Look up any UA flight number from the header search bar. Returns live position, route, aircraft details, and scheduled/actual times via the official Flightradar24 API.
Dedicated SEO-rich pages for each of United's 9 hubs (ORD · DEN · IAH · EWR · SFO · IAD · LAX · NRT · GUM). Each page includes live flight counts, hub overview with terminal/concourse details, United Club and Polaris lounge locations, delay pattern analysis by season, Starlink WiFi info, construction alerts with links to official project pages, structured FAQ, and FAQPage + Airport schema markup for search engines. Jump navigation and scroll hints guide visitors through the content.
📰 News
Curated United Airlines news hub with individual article pages, source links, and cross-links to related hub and fleet pages via tags. Google News sitemap and dynamic RSS feed for indexing. "Latest News" banner on the dashboard links to the newest article. Optional email digest via Resend Broadcasts notifies waitlist subscribers of new articles.
- AI delay risk scoring — 8-signal algorithm considers weather, FAA programs, hub OTP, inbound aircraft, time-of-day cascade risk, and hub-specific profiles
- AI delay explanations — Click any risk badge for a natural language briefing powered by Claude AI
- Inbound aircraft tracking — "Where's My Plane?" shows your aircraft's current position operating its previous flight
- Deep-link hashes — Share direct links to any tab (
#live,#schedule,#fleet,#weather,#stats) - Flight watch — Pin a flight and get browser push notifications on status changes
- Hub health bar — At-a-glance on-time performance across all 9 hubs, with cancellation rate detection (shows
100% CXwhen a hub is shut down) - Equipment swap alerts — Badges when scheduled aircraft type changes
- 📱 Mobile-first design — Map-maximized layout with bottom tab bar navigation, collapsible filters
- PWA support — Installable as a home screen app on iOS/Android with offline caching
- Click the title — "THE BLUE BOARD" header always takes you back to Live Ops
┌─────────────────────────────────────────────────────┐
│ Browser (SPA) │
│ │
│ public/index.html — single-file dark NOC dashboard │
│ ├── Leaflet map + CartoDB dark tiles │
│ ├── NEXRAD radar tile overlay │
│ ├── Event delegation (data-action attributes) │
│ ├── Fleet/Starlink data loaded async from /data/ │
│ └── All API calls go through server-side proxies │
└──────────────┬──────────────────────────────────────┘
│
┌──────────▼──────────────────────────────┐
│ Vercel Serverless Functions │
│ │
│ /api/schedule — FR24 schedule proxy│
│ (cached, rate- │
│ limited, filtered)│
│ /api/irops — Precomputed IROPS │
│ metrics (5min cache)│
│ /api/fr24-feed — Live flight feed │
│ /api/fr24-flight — Flight lookup │
│ /api/delay-explain — AI delay briefings │
│ (Claude, cached) │
│ /api/metar — AWC weather proxy │
│ /api/faa — FAA NAS status │
│ /api/fleet — Fleet data proxy │
│ /api/waitlist — Waitlist signup │
│ /api/news-notify — Email digest │
│ /api/fr24-usage — FR24 credit monitor│
│ │
│ Cron jobs (vercel.json): │
│ /api/cron/warm-schedules — every 15min │
│ /api/cron/sync-starlink — every 4hrs │
└──────────┬──────────────────────────────┘
│
┌──────────▼──────────────────────────────┐
│ Supabase (Postgres) │
│ waitlist · schedule_snapshots │
│ news_notifications · RLS policies │
└─────────────────────────────────────────┘
- Rate limiting — One server fetches data for all users, not 500 browsers hammering APIs independently
- Caching — Schedule data cached 60s (live) / 5min (historical), IROPS cached 5min, reducing upstream load by 90%+
- UA filtering — Server filters to United flights only, shrinking payloads dramatically
- CORS — Some sources (AWC, FAA) don't allow direct browser requests
- Batching — METAR data for all 9 hubs fetched in a single request
| Source | Data | Freshness | Notes |
|---|---|---|---|
| Flightradar24 | Live positions, schedules, flight lookup | ~15s–60s | Server-side proxy with caching |
| Aviation Weather Center | METAR observations | ~5min | NOAA/CORS proxy, batched |
| FAA NAS Status | Delays & ground stops | ~5min | XML→JSON proxy |
| United Fleet Site | Fleet database | Daily | Community-maintained |
| Starlink Tracker | WiFi-equipped aircraft | Daily | @martinamps |
| Iowa State NEXRAD | Radar imagery | ~5min | Direct tile server |
| Supabase | Waitlist, schedule snapshots, notifications | Real-time | Postgres with RLS |
| Anthropic Claude | AI delay explanations | On-demand | Haiku model, cached 5min |
| Resend | Email delivery | On-demand | Welcome emails, news digests |
- Frontend: Vanilla HTML/CSS/JS — single-file dashboard, Astro-templated content pages
- Map: Leaflet + CartoDB dark tiles
- Radar: Iowa State NEXRAD WMS tiles
- Fonts: Inter (UI) + JetBrains Mono (data) — self-hosted WOFF2
- Build: Astro (static pages) + Vite (dashboard bundle)
- Hosting: Vercel (serverless functions + edge CDN)
- Database: Supabase (waitlist, schedule snapshots, news notifications)
- Email: Resend (waitlist welcome emails, news digest broadcasts)
- AI: Anthropic Claude (delay risk explanations)
- Runtime: Bun (package manager + script runner)
- Testing: Vitest + Playwright
- Analytics: Vercel Web Analytics + Speed Insights
- Design: Dark NOC theme, inspired by Bloomberg terminals and airline ops centers (design system)
- Content Security Policy — Strict CSP via Vercel headers with
default-src 'self',frame-ancestors 'none', and scoped source directives - Security headers —
X-Frame-Options: DENY,X-Content-Type-Options: nosniff,Referrer-Policy,Permissions-Policy,Strict-Transport-Security(HSTS with preload) - XSS protection — All dynamic API data is HTML-escaped before DOM insertion (including single quotes). Zero inline event handlers — all interaction via delegated
data-actionattributes. - CORS — API endpoints locked to
theblueboard.coorigin - Input validation — All API parameters validated and sanitized server-side
- Row-level security — Supabase RLS policies on all user-facing tables
- Prompt injection protection — AI delay-explain endpoint sanitizes input before passing to Claude
- Tabnabbing protection — All external links use
rel="noopener noreferrer"
├── src/
│ ├── components/
│ │ └── Footer.astro # Shared footer (disclaimer, sources, donation CTA)
│ ├── dashboard/
│ │ └── main.js # Dashboard SPA entry point (Vite-bundled)
│ ├── layouts/
│ │ ├── HubLayout.astro # Shared hub page template
│ │ ├── FleetTypeLayout.astro # Fleet type page template
│ │ └── NewsLayout.astro # News article page template
│ ├── lib/
│ │ ├── delay-risk.js # 8-signal delay risk scoring engine
│ │ ├── metar.js # METAR parsing and weather classification
│ │ └── buildMetadata.js # SEO metadata helpers (lastmod, sitemap)
│ ├── pages/
│ │ ├── 404.astro # Branded "Flight not found" 404 page
│ │ ├── sitemap.xml.ts # Dynamic sitemap (all pages)
│ │ ├── feed.xml.ts # Dynamic RSS feed (news + updates)
│ │ ├── news-sitemap.xml.ts # Google News sitemap
│ │ ├── hubs/
│ │ │ └── [hub].astro # Dynamic route → 9 hub pages
│ │ ├── fleet/
│ │ │ ├── index.astro # Fleet overview (all 19 types)
│ │ │ └── [type].astro # Dynamic route → 19 fleet type pages
│ │ └── news/
│ │ ├── index.astro # News hub index
│ │ └── [slug].astro # Dynamic route → individual articles
│ └── data/
│ ├── hubs.js # Hub metadata (all 9 hubs)
│ ├── fleet/ # Fleet type data (19 aircraft types)
│ └── news/ # News article data
├── public/
│ ├── index.html # The entire dashboard (single file)
│ ├── css/style.css # Extracted dashboard styles
│ ├── fonts/ # Self-hosted Inter + JetBrains Mono (WOFF2)
│ ├── data/ # Fleet + Starlink JSON databases
│ ├── og-image.png # Social media preview image (1200×630)
│ ├── manifest.json # PWA manifest
│ ├── sw.js # Service worker (split caches, offline support)
│ ├── icons/ # PWA app icons (192px, 512px)
│ └── robots.txt # Search engine directives
├── api/
│ ├── schedule.ts # FR24 schedule proxy (cached, rate-limited)
│ ├── irops.ts # Server-side IROPS aggregation (5min cache)
│ ├── fr24-feed.ts # Live flight feed proxy
│ ├── fr24-flight.ts # FR24 official API flight lookup
│ ├── delay-explain.ts # AI delay explanations (Claude)
│ ├── metar.ts # AWC METAR weather proxy (batched)
│ ├── faa.ts # FAA NAS status proxy (XML → JSON)
│ ├── fleet.ts # Fleet data proxy
│ ├── waitlist.ts # Waitlist signup + welcome email
│ ├── news-notify.ts # News digest email broadcasts
│ ├── fr24-usage.ts # FR24 credit usage monitor
│ ├── cron/warm-schedules.ts # Schedule cache warming (every 15min)
│ └── cron/sync-starlink.ts # Starlink data sync (every 4hrs)
├── sql/ # Supabase migration files
├── scripts/ # Build + seed scripts
├── tests/ # Vitest test suite
├── DESIGN.md # Design system documentation
├── CHANGELOG.md # Release history
└── vercel.json # Vercel config + headers + CSP + crons
This project is free, ad-free, and open source. It costs real money to keep running — API calls, Vercel hosting, and the time to build and maintain it.
If The Blue Board has saved you a trip to the gate screen or helped you spot an equipment swap before boarding, consider supporting the project:
Every donation helps cover server costs and keeps the dashboard free for everyone. You can also suggest a feature with your coffee — I read every one.
Got an idea? Found a bug? Open an issue →
The community drives this project. Some of the best features came from user suggestions on Reddit and FlyerTalk. PRs welcome too — the dashboard is a single HTML file, and content pages are Astro templates, so the barrier to entry is low.
Follow @theblueboard on X for updates, new features, and release notes.
The Blue Board is not affiliated with, endorsed by, or connected to United Airlines, Inc. "United Airlines" and the United logo are trademarks of United Airlines, Inc.
All flight data is provided for informational purposes only and may be delayed, incomplete, or inaccurate. Do not use this dashboard for operational or safety-critical decisions. Always verify flight status directly with united.com.
FSL-1.1-MIT — see LICENSE for details.
Built on a
