リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Live at https://www.wheretoflydirect.com
Pick any airport and see every nonstop destination on a map. Or search an airline to map its whole network. Click any route to see who flies it, the flight numbers seen this week, typical takeoff times and the aircraft used.
Stack: plain HTML/CSS/JS + Leaflet, a bundled Natural Earth world map (no tile service or API key), deployed as a static site on Vercel. Data refreshes weekly via GitHub Actions.
public/vendor/ (copied from npm), so nothing outside this site can run on the page.vercel.json sets a Content-Security-Policy that only allows this site's own files, plus nosniff, referrer, permissions and anti-framing headers.Vercel Web Analytics (cookieless) counts page views. On the free plan it can't record button clicks, so outbound links go to /go/prices/BKK-CNX (or /go/schedule/BKK-CNX/TG), a tiny page on this site that forwards to Google Flights. Each visit there is a page view, so the Analytics "Pages" list shows clicks per route. public/go.js is also the one place to change if the links ever go to a booking partner.
Site code: © 2026 Noobie502, all rights reserved (LICENSE). Built data in public/data/: ODbL 1.0 (DATA-LICENSE.md). Leaflet (BSD-2) and the fonts (OFL) keep their own licences.
| What | Source | Freshness |
|---|---|---|
| Routes, carriers, scheduled flight time | Jonty/airline-route-data (scraped from FlightsFrom.com; operating carriers only, no codeshares) | weekly |
| Flights seen, aircraft types, takeoff times | adsb.lol ADS-B history (ODbL) | last 7 days |
| Aircraft for routes not seen in tracking | OpenFlights (ODbL) | 2014, labelled as such |
How flights are derived from tracking (scripts/observed.py):
THA661) gives the airline; scripts/airline_icao_extra.json maps regional operators to the brands they fly for (e.g. Envoy → American).Data checks done on every build (scripts/build_data.py prints a report):
RYR8HG) are shown as call signs.Limits: coverage depends on volunteer receivers, so some regions (parts of Africa, Central Asia, oceans) have gaps; those routes fall back to 2014 aircraft data or show "not seen".
mkdir -p data-src/openflights
curl -sSfLo data-src/airline_routes.json https://raw.githubusercontent.com/Jonty/airline-route-data/main/airline_routes.json
for f in airports routes airlines planes; do
curl -sSfLo data-src/openflights/$f.dat https://raw.githubusercontent.com/jpatokal/openflights/master/data/$f.dat
done
scripts/fetch_observed.sh data-src/airline_routes.json data-src/observed 7 # ~4 GB per day, streamed
python3 scripts/build_data.py data-src/airline_routes.json data-src/observed data-src/openflights public/data
The world map only needs rebuilding if you change it:
npm i world-atlas@2 topojson-client@3
node scripts/build_world.mjs node_modules/world-atlas/countries-50m.json public/data/world.json
.github/workflows/refresh-data.yml runs all of this every Monday and commits the result, which Vercel then deploys. You can also run it by hand from the Actions tab.
npx serve public