Skip to content

Übersetzung in Arbeit

Diese Seite wird automatisch aus dem englischen Original gespiegelt, bis eine deutsche Übersetzung vorliegt. Der Inhalt ist auf Englisch — die Navigation und Oberfläche sind bereits übersetzt.

3D Globe ​

The Veytics globe is the primary OSINT surface — a single Cesium 3D world that overlays vessels (AIS), aircraft (ADS-B), news, and event pins, all driven by live data from the Veytics backend. Implemented in frontend/src/components/OsintGlobe.jsx.

3D Globe with live AIS and ADS-B layers

Layers ​

The globe ships with four layers, each independently toggleable from the right sidebar:

  • AIS (vessels) — live and recent vessel positions sourced from AISstream.io via backend/routes/vessels.py. AIS ingest is off by default and must be enabled. Vessel pins show name, MMSI, speed, and heading.
  • ADS-B (aircraft) — live aircraft positions from OpenSky via backend/routes/aircraft.py. Aircraft pins show callsign, altitude, and ground speed.
  • News pins — geolocated breaking news pinned by latitude/longitude (see backend/routes/news.py).
  • Capitals & events — country capitals and timeline events pulled from backend/routes/events.py.

Map controls (bottom-left pill bar) ​

A single horizontal pill bar at the bottom-left of the globe:

PillWhat it does
MapFlat raster basemap
SatelliteHigh-resolution satellite imagery
3DTilt + Cesium World Terrain + OSM Buildings (Pro feature)
⌃ LayersOpens the layer popover — aircraft / vessel / news / capital
  • 3D is enabled only in Satellite mode, and gated behind the globe_premium subscription feature. Free accounts see a gold lock icon and a click redirects to /pricing.
  • Layers popover toggles each data layer independently. Off-state dims the colour swatch and hides pins.

Live tracking ​

Click any pin to focus the camera and pin the detail card to the right rail. The card shows identification, live telemetry, route history (where available), last update timestamp, and a Generate intel action that hands the focused entity off to AI chat for plain-language analysis. Status badges (live, delayed, unconfirmed) reflect data freshness from the upstream provider.

Live data reaches the browser via periodic REST polling (roughly every 30 seconds); there is no client-side WebSocket stream. Pins refresh on each poll rather than tick-by-tick.

Required env ​

The globe needs Cesium Ion tokens on both the backend and the frontend (the latter is bundled into the client at build time and is therefore public — never use a backend-only token here):

  • CESIUM_ION_TOKEN (backend, server-side rendering of tile URLs)
  • VITE_CESIUM_ION_TOKEN (frontend, public Cesium Ion access)
  • OPENSKY_USERNAME / OPENSKY_PASSWORD (optional, raises ADS-B rate limit)
  • AIRCRAFT_FIXTURE_FALLBACK — defaults to True, so when the aircraft table is empty the API serves 6 unlabeled demo planes (callsigns ATLS101–ATLS606). Set it to false in production so live deployments never ship fixtures.

See Quick Start for the full env list and Data delays & limits for AIS/ADS-B coverage gaps.

Tips ​

  • The globe and the Watchlist are not directly linked — saving a vessel/aircraft from the globe creates an OSINT subset, not a market watchlist entry.
  • Use Timeline & events to scrub historical positions; the globe alone is live-only.
  • For large pin counts, the renderer clusters automatically — zoom in to disambiguate.
  • Pin colors encode status freshness, not vessel type — green is fresh telemetry, amber is stale, gray is silent.
  • Click-and-drag pans; right-click-and-drag tilts; scroll zooms. Use the Home key to reset the camera to a neutral world view.

Performance ​

The globe is the most GPU-intensive surface in Veytics. Expect:

  • Smooth (60 FPS) on a discrete GPU rendering up to ~5,000 simultaneous pins after clustering.
  • Workable (~30 FPS) on integrated graphics with the same load.
  • Choppy when both AIS and ADS-B layers are zoomed out globally with no clustering — the renderer falls back to point-rendering instead of billboard sprites.

If you hit the choppy regime, drop one layer or zoom in. The performance budget is per-frame, not global, so a regional view of 2,000 pins is much faster than a global view of 200.

Common pitfalls ​

SymptomLikely causeFix
Globe blank, console "Cesium token invalid"VITE_CESIUM_ION_TOKEN missing from buildSet the env, rebuild, redeploy
Globe loads but no pinsProvider key missing or layer toggle offAPI keys; press v/a
Pins flicker on every refreshAggressive cache disabled in DevToolsClose DevTools or disable "Disable cache while DevTools open"
Camera won't moveStuck in "follow target" mode after a clickPress Esc or click an empty area
Globe is rotated upside-downCesium camera-state corruption (rare)Home key to reset, or hard-reload

Anatomy of a detail card ​

When a pin is focused, the right rail shows:

┌───────────────────────────────┐
│ ⛴ MS WATCHFUL                  │   ← Identification
│ MMSI 123456789, FLAG NL        │
├───────────────────────────────┤
│ ▸ Live telemetry              │   ← Live position
│   Lat 51.94, Lon 4.13          │
│   Speed 12.3 kts, Heading 271° │
│   Last update 02:14 UTC ▮ live │
├───────────────────────────────┤
│ ▸ Route                       │   ← Recent track (if available)
│ ▸ AI summary [Generate intel] │   ← One-click AI chat handoff
│ ▸ Actions                     │
│   ☆ Save to subset            │
│   🔔 Alert on event            │
│   🔗 Share permalink           │
└───────────────────────────────┘

detail.* keys in frontend/src/i18n/en.json name each section.

Released under the project license. Public sources only — no proprietary or restricted data.