Skip to content

Maps & visualisations

The dashboard’s main view is a map. The same flights can be drawn eight different ways, switched via the floating-action button in the bottom-right corner. Each mode answers a different question.

ModeBest forWhat you see
Routes”Where have I flown?”Curved arcs between every airport pair, drawn over a 2D MapLibre basemap
Globe”How does my travel look on a sphere?”Spinning 3D globe with great-circle arcs, optional auto-rotation
Heatmap”Where do I cluster?”Soft heat blob centred on each airport, weighted by visit count
Hexagon”How densely have I flown over each region?“3D hexagonal grid bins, taller = more flights
3D Columns”Which single airports dominate?”One vertical column per airport, height + colour scale with visit count
Trips”What did my year look like?”Animated lines flying along the timeline — scrub through your travel history
Contour”What are the hot/warm/cool zones?”Topographic-style contour lines at four thresholds (1, 4, 10, 20 visits)
Trip Routes”Highlight the legs of one trip”Routes coloured by trip; non-trip flights dimmed

Click the FAB to open the mode picker; click a mode to switch. The current mode persists across sessions.

The 2D version. Curved arcs between every flown pair, drawn on top of a MapLibre vector basemap (you choose the basemap style under Settings → Map style). Pan, zoom, hover for tooltips, click an arc or airport to drill into the underlying flights.

Best for routine “show me the network” view. Fast even with thousands of flights — lines collapse visually when you zoom out, the arc curve hints at frequency.

Same flights as Routes, but on a 3D sphere using react-globe.gl. Auto-rotation is on by default and respects prefers-reduced-motion. You can grab and drag the globe; double-click to reset.

The globe shines when your flights span continents — the curvature makes long-haul routes “make sense” in a way the flat projection doesn’t. For dense regional networks, Routes is clearer.

Each airport becomes a soft circular blob of heat, scaled by the number of times you’ve been there. Built on @deck.gl/aggregation-layers HeatmapLayer with a 60-pixel radius and intensity 1.

Best for “where do I cluster” without caring about exact connections — a quick read on your activity geography.

A 3D hexagonal grid where each cell aggregates the airports that fall inside it. Cell radius is 50 km; height is scaled by the count of visits in that cell.

Useful when neighbouring airports (e.g. LHR + LGW + STN) belong to the same metro area — the hexagon merges them into one tall column rather than three separate spikes.

One vertical column per airport, similar to Hexagon but per-airport instead of per-grid-cell. Height + colour both scale with visit count (quartile colour ramp from layerTypes.ts). The most-visited airport hits 500 km elevation; others scale proportionally.

Best for “what’s my home base?” at a glance — the tallest column is where you spend most time. The colour gradient highlights the long tail.

The same flights as Routes, but drawn as moving paths along a timeline. A time slider at the bottom of the map lets you scrub forward and backward through your travel history, with each leg appearing as a trail that fades out after ~6 hours of in-trip-time.

Excellent for storytelling — paste a year of travel into a video and the plot reveals itself. Works on any density of flight history.

A topographic view of your flight density, drawn as concentric contour lines at four thresholds:

ThresholdColourMeans
≥ 1 visitslate (faint)Rare
≥ 4 visitsamberRegular
≥ 10 visitsorangeFrequent
≥ 20 visitsredHotspot

80 km grid cells. Best for distinguishing “I’ve been there a few times” from “this is my second home” without any 3D extrusion.

A specialised mode that colours each flight by which trip it belongs to. Non-trip flights are dimmed; the current trip’s airports get amber rings + IATA labels.

The active trip can be selected from the trip dropdown. Click any flight arc to drill into its detail page; click an airport ring to filter further.

A filter panel folds out from the left. The same filters apply to every visualization mode:

  • Time period — year and/or month picker. Multi-year selection.
  • Route frequency — show only routes flown ≥ N times. Useful when you want to declutter to your “real” routes.
  • Airlines — multi-select. Select All / None shortcuts.
  • Status — flown, scheduled, cancelled, historical. Combine to show e.g. “all upcoming + cancelled” together.

Filters are URL-shareable: the dashboard URL encodes the active filters as query params, so you can bookmark or send a co-traveller a link to “your 2024 international flights”.

The map adapts to the currently active visual theme (Glassmorphism, Aero Vista, Solar Glow, etc. — set under Settings → Theme). Each theme defines a palette for the layer colours so the visualisations look consistent with the rest of the UI.

Light / dark mode swaps the basemap style automatically — the dark basemap is fewer ink-pixels per square mile and reads better at night.

  • 8000+ flights render smoothly on a modern laptop in any mode (deck.gl is GPU-accelerated)
  • Hexagon and 3D Columns are slower at very dense data because they re-aggregate on every camera move; throttle pan/zoom if your hardware struggles
  • Mobile WebGL is fine for Routes/Globe/Heatmap; Hexagon and Columns may stutter on low-end devices
  • No animated playback for Routes/Globe — Trips mode is the only animated view. Routes/Globe show all flights at once
  • No clustering by geographic region — every airport is plotted individually, even at low zoom. Could overlap visually in Frankfurt- Munich-Vienna-style clusters
  • Cruise voyages will appear in v2 — when the cruise feature lands (currently behind a feature flag), Routes and Trips modes will draw ship paths alongside flights