Real-time flight map for Microsoft Flight Simulator 2020 β in your browser, in VR.
A Leaflet-powered moving map that displays your MSFS 2020 aircraft position in real time, with a glass-cockpit HUD, flight plan tracking, and waypoint navigation β all rendered in a browser window you can pin inside your VR headset.
The main view: Leaflet moving map with the FlightDeckHUD overlay showing live telemetry β airspeed, altitude, heading, pitch/bank, fuel, gear/flaps, wind, and vertical speed.
Flight Plan tab: waypoint list with active leg highlighting, distance, bearing, and ETA β displayed alongside the route polyline on the map.
Step-by-step MSFS Bridge setup guide built right into the UI β no need to dig through documentation.
Start/stop the Python SimConnect bridge from the browser with a live log viewer and connection status indicator.
- Live Telemetry β Aircraft position, heading, speed, altitude, pitch/bank, fuel, gear/flaps, wind, and vertical speed streamed in real time via Server-Sent Events
- Moving Map β Leaflet map with multiple tile layers (CartoDB Dark/Light, OpenStreetMap, OpenAIP airspace overlay) and a rotated plane icon that follows your heading
- Flight Plan Panel β Waypoint list with active leg highlighting, distance, bearing, and ETA calculations
- Glass-Cockpit HUD β Real-time flight instruments displayed in a clean overlay
- Python SimConnect Bridge β Reads telemetry directly from MSFS 2020 via SimConnect SDK and serves it to the Node.js backend
- Bridge Control UI β Start/stop the Python bridge from the browser with live log output
- VR-Ready β Open in a browser overlay (e.g., OVR Toolkit, Desktop+) pinned in your VR cockpit
MSFS 2020 (SimConnect SDK)
β
βΌ
Python Bridge (msfs_bridge.py)
ββ Polls telemetry every 1β2s
ββ Serves JSON at http://localhost:5912
β
βΌ
Node.js Server (server.ts)
ββ Express REST + SSE endpoints
ββ Spawns/monitors bridge subprocess
ββ Vite dev server for React SPA
β
βΌ
React Frontend (src/)
ββ Leaflet map with tile layers
ββ FlightDeckHUD β telemetry gauges
ββ FlightPlanPanel β waypoint tracking
ββ BridgeLauncher β bridge control UI
See ARCHITECTURE.md for the full system diagram and data flow details.
npm installnpm run devThis starts the Node.js server with Vite. The app will be available at http://localhost:3000.
Make sure MSFS 2020 is running, then either:
- From the browser β Click the "Start Bridge" button in the Bridge Launcher panel
- From the terminal:
python bridge/msfs_bridge.py
The bridge connects to MSFS via SimConnect and begins streaming telemetry to the server.
Use your VR browser overlay tool (OVR Toolkit, Desktop+, etc.) to pin http://localhost:3000 inside your cockpit view.
msfs-vr-flight-map/
βββ server.ts # Express + Vite server, SSE telemetry, bridge process manager
βββ bridge/
β βββ msfs_bridge.py # Python SimConnect bridge
βββ src/
β βββ App.tsx # Root component with Leaflet map, sidebar, telemetry state
β βββ main.tsx # React entry point
β βββ index.css # Tailwind CSS
β βββ types.ts # TypeScript type definitions
β βββ components/
β β βββ FlightDeckHUD.tsx # Telemetry gauges overlay
β β βββ FlightPlanPanel.tsx # Waypoint list & navigation info
β β βββ BridgeLauncher.tsx # Bridge start/stop & log viewer
β β βββ MSFSBridgeGuide.tsx # Step-by-step setup instructions
β βββ utils/
β βββ bearing.ts # Bearing calculation utility
β βββ bearing.test.js # Bearing unit tests
βββ ARCHITECTURE.md # Full architecture documentation
βββ vite.config.ts # Vite configuration
βββ tsconfig.json # TypeScript configuration
βββ package.json
| Command | Description |
|---|---|
npm run dev |
Start the development server (Express + Vite) |
npm run build |
Build for production (Vite + esbuild) |
npm run start |
Run the production build |
npm run lint |
Type-check with TypeScript compiler |
npm run test |
Run bearing utility tests |
The Python bridge runs an HTTP server on http://localhost:5912 by default. The Node.js server expects to find it there. You can configure the bridge port and other settings in bridge/msfs_bridge.py.



