/the garage — 09 / 09
Personal project in progressBifrostControl Deck
An intelligence platform for strategic conflict simulation: live aircraft, live economies and a missile simulator, converging on one interactive 3D globe.

/overview
An intelligence platform for strategic conflict simulation: live aircraft, live economies and a missile simulator, converging on one interactive 3D globe behind a single FastAPI bridge.
/approach
Control Deck
Built the globe.gl scene with three.js sprites and shadcn/radix panels for telemetry, economy snapshots and the missile loadout.
The bridge
Routed every external feed through a FastAPI backend, so the browser never sees an API key or talks to a provider directly.
Live feeds
Wired OpenSky, FRED and AISStream behind that bridge, plus a MySQL catalog of publicly documented missile systems.
Dark UI
Designed a control-room dark interface language built for dense, live data and high focus.
/data feeds
Every feed crosses the Bifrost backend before it reaches the globe — the browser never talks to a provider directly.
OpenSkyconnected
11,000+ live aircraft, rendered on the globe in real time
FREDconnected
Economic indicators per country — GDP, inflation, unemployment, rates
Missilesconnected
Simulator loadout — 118 publicly documented systems
AISStreamplanned
Maritime traffic — backend WebSocket relay ready, globe layer in progress

/development
- Next.js
- Globe.gl
- Three.js
- FastAPI
- SQLAlchemy
- MySQL
- OpenSky
- FRED
- AISStream

/ux design
- Information architecture
- Data visualization
- Interaction design
- Dark UI

/architecture
Three tiers, one bridge: the Control Deck never touches an API key or an external provider directly — everything crosses the FastAPI backend, Bifrost's namesake.
Tier 01
Control Deck
Next.js frontend
A globe.gl scene with three.js sprites: aircraft rendered as SVG plane icons through a texture cache, colored by ADS-B category. Country polygons come from TopoJSON, a cloud mesh animates on demand, and shadcn/radix panels handle telemetry, economy snapshots and the missile loadout.
- globe.gl
- three.js
- TopoJSON
- shadcn/ui
- Tailwind 4
Tier 02
Bifrost Backend
FastAPI bridge
Every feed crosses this bridge — the browser never sees an API key. Routes delegate to per-provider services over a shared httpx client: OAuth-authenticated OpenSky calls, FRED queries composed into per-country economy snapshots, and a WebSocket relay that injects the AISStream key and forwards position reports downstream.
- GET /api/opensky/states/all
- GET /api/economy/country?name=Russia
- GET /api/missiles
- WS /api/aisstream/stream
Tier 03
Data Sources
Live feeds & storage
OpenSky Network for live aircraft states, flights and tracks; FRED for economic series; AISStream for maritime traffic; and a MySQL catalog of publicly documented missile systems, queried through SQLAlchemy.
- OpenSky REST
- FRED REST
- AISStream WS
- MySQL + SQLAlchemy
/the control deck

