CleanFrame
A personal home screen for Samsung The Frame. A starting point to fork and adapt.
Pick any airport, airline or aircraft and see every nonstop route on a map, with the flights, takeoff times and aircraft seen this week.
LifestyleGitHub @Noobie502OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
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