What Data Sources Are Used for Flight Tracking in God's Eye View?

God's Eye View aggregates real-time flight data from three public aviation APIs—OpenSky Network for global ADS-B feeds, adsb.lol for high-resolution local snapshots and military aircraft, and adsbdb.com for aircraft metadata enrichment—to power its comprehensive tracking interface.

The open-source flight tracking application God's Eye View (bilawalsidhu/gods-eye-view) relies on a multi-source architecture to deliver real-time aviation data without hosting expensive radio hardware. Understanding what data sources are used for flight tracking in this React-based application reveals how modern web apps aggregate public ADS-B feeds through proxy layers and modular data services.

The Three Core Data Sources for Flight Tracking

OpenSky Network (Global ADS-B Feed)

The OpenSky Network provides the primary backbone of global aircraft positions, offering a worldwide ADS-B feed covering all aircraft. The application proxies requests through the local endpoint /api/opensky, which forwards to https://opensky-network.org/api/... according to the proxy implementation in vite.config.js (lines 2912-3045). The main data layer consumes this feed via src/data/flights.js, where the constant const API_URL = '/api/opensky' defines the base path for fetching state vectors.

adsb.lol (Point Snapshots and Military Aircraft)

adsb.lol serves two distinct purposes within the application architecture. First, it delivers point-based snapshots for the current map viewport, proxied through /api/adsblol as defined in vite.config.js (lines 4703-4730). Second, it provides a dedicated military aircraft feed accessed via /api/adsblol/mil, with processing logic isolated in src/data/militaryFlights.js. This separation allows the application to render military flights with distinct visual styling while maintaining high-resolution positional data for the user's current view.

adsbdb.com (Callsign Enrichment)

adsbdb.com enriches raw flight data with aircraft metadata including type designators, registration numbers, and origin-destination routes. The proxy at /api/adsbdb/* (see vite.config.js lines 2325-2416) forwards enrichment requests to the adsbdb API. The flight manager in src/data/flights.js processes these enrichments through helper functions like _enqueueEnrich, which queues requests for callsign-to-route and ICAO-to-type translations.

How the Data Sources Are Integrated

Vite Proxy Configuration

The development server uses Vite's proxy feature to route API requests and handle CORS restrictions. The vite.config.js file defines three critical proxy paths: /api/opensky for OpenSky Network global feeds, /api/adsblol for adsb.lol snapshots and military data, and /api/adsbdb for metadata enrichment. This architecture allows the frontend to fetch data from third-party APIs as if they were local endpoints, centralizing request management and caching logic.

Data Layer Implementation

The application modularizes data fetching across specialized modules. src/data/flights.js orchestrates the primary OpenSky feed and manages the adsbdb enrichment queue. src/data/militaryFlights.js isolates military-specific parsing logic, while src/data/adsbLolFallback.js handles viewport-based point queries with the fetchAdsblolPoint function. Attribution for these sources is maintained in src/data/dataCredits.js, ensuring compliance with API terms of service.

Code Implementation Examples

The following implementations demonstrate how each data source is consumed within the application's data layer:

Fetching the OpenSky feed (used by the main flight layer):

// src/data/flights.js
const API_URL = '/api/opensky';

export async function fetchOpenSky() {
  const response = await fetch(API_URL);
  const data = await response.json();   // { states: [...] }
  return data;
}

Fetching a point-snapshot from adsb.lol (used for the current viewport):

// src/data/adsbLolFallback.js
export async function fetchAdsblolPoint(lat, lon) {
  const url = `/api/adsblol/point?lat=${lat}&lon=${lon}`;
  const resp = await fetch(url, { headers: { 'User-Agent': 'gods-eye-view' } });
  return resp.json(); // { ac: [...] }
}

Enriching a callsign with adsbdb data (type & route):

// src/data/flights.js (excerpt)
_enqueueEnrich(`t:${icao24}`, `/api/adsbdb/type/${icao24.toLowerCase()}`, (data) => {
  // data.type, data.registration, …
});
_enqueueEnrich(`r:${callsign}`, `/api/adsbdb/route/${encodeURIComponent(callsign)}`, (data) => {
  // data.route (origin → destination)
});

Summary

  • Three public APIs power the stack: OpenSky Network, adsb.lol, and adsbdb.com
  • The Vite development server proxies all requests through /api/* endpoints to handle CORS and implement caching strategies
  • src/data/flights.js coordinates primary flight data and metadata enrichment via the _enqueueEnrich helper
  • Military aircraft tracking is isolated in src/data/militaryFlights.js using the adsb.lol military feed at /api/adsblol/mil
  • Point-based viewport queries for high-resolution local data are handled by src/data/adsbLolFallback.js

Frequently Asked Questions

What is the primary data source for real-time flight positions?

The OpenSky Network provides the primary global ADS-B feed for all aircraft positions worldwide. The application consumes this through the proxied endpoint /api/opensky as implemented in src/data/flights.js, which polls the OpenSky API and processes the states array containing live aircraft coordinates, velocities, and altitudes.

How does God's Eye View handle military aircraft tracking?

Military aircraft are tracked separately using adsb.lol's dedicated military feed. The system queries /api/adsblol/mil through the proxy configuration in vite.config.js, with parsing and state management logic isolated in src/data/militaryFlights.js. This architectural separation ensures military flights are flagged distinctly from civilian traffic in the visualization layer while maintaining high update frequencies.

What API provides aircraft type and route information?

The adsbdb.com API enriches raw flight data with aircraft registration, ICAO type designators, and origin-destination routes. When a callsign is detected, the application queues enrichment requests via the _enqueueEnrich helper in src/data/flights.js, fetching metadata from /api/adsbdb/type/${icao24} for aircraft specifications and /api/adsbdb/route/${callsign} for flight plan details.

Is authentication required for these flight tracking APIs?

According to the source code in bilawalsidhu/gods-eye-view, the OpenSky Network supports optional authentication for higher rate limits, while adsb.lol and adsbdb.com are consumed without authentication tokens in the current implementation. The Vite proxy configuration handles request forwarding without injecting API keys into client-side bundles, keeping credentials server-side during development.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →