Skip to content

Splestule/Aether

Repository files navigation

Aether Logo

Aether

Real-Time VR Flight Tracker

MIT License TypeScript React WebXR

Live Demo | Contributing


What is Aether?

Aether is a flight tracker built for VR. Put on a Meta Quest (or any WebXR headset), look up at the sky, and see real planes exactly where they're flying — live positions, correct direction, the whole thing.

It also works on desktop as a 3D flight map, and on mobile as an AR experience. You can teleport anywhere in the world, watch traffic flow in real-time, and inspect individual flights for details like altitude, speed, and trajectory.

Built on OpenSky Network data, rendered with Google Photorealistic 3D Tiles and Cesium terrain.

Achievements & Recognition

🏆 3rd Place — Czech Electrotechnical Olympiad (2025)

Featured in: Feedit.cz, Hitrádio Vysočina, Žďárský Deník, Kraj Vysočina

Features

  • VR support — Full WebXR mode for Meta Quest and other compatible headsets
  • Live tracking — Real-time position updates via WebSocket
  • 3D environment — Google Photorealistic 3D Tiles + Cesium World Terrain
  • Flight inspection — Point at aircraft to see telemetry data
  • Global coverage — Teleport anywhere to monitor local airspace

Architecture

graph TD
    User((User)) -->|WebXR / Browser| Client[<b>Aether Client</b><br/>React + Three.js + Cesium]
    Client <-->|WebSocket| Server[<b>Aether Server</b><br/>Node.js + Express]
    Client -->|REST| Server

    subgraph Backend Services
    Server -->|Cache| InMem[In-Memory Cache]
    end

    subgraph External APIs
    OpenSky[OpenSky Network API]
    Elevation[Open-Elevation API]
    Google3D[Google Photorealistic 3D Tiles]
    end

    Server -->|Polling| OpenSky
    Client -.->|Terrain Data| Elevation
    Client -.->|Tiles| Google3D
Loading

Tech Stack

  • Frontend: React, Three.js (React Three Fiber), WebXR, CesiumJS, TailwindCSS
  • Backend: Node.js, Express, WebSocket
  • Data: OpenSky Network (flights), Open-Elevation (terrain)
  • DevOps: Docker, Docker Compose

Getting Started

Prerequisites

  • Node.js v18+
  • npm or pnpm
  • Git

Installation

  1. Clone the repo

    git clone https://github.com/Splestule/Aether.git
    cd Aether
  2. Install dependencies

    npm install
  3. Set up environment variables

    cp server/env.example server/.env
  4. Build the shared package (required once before first run)

    npm run build
  5. Start the dev server

    npm run dev

    Backend runs on port 8080, frontend on port 3000.

Bring Your Own Key (BYOK)

You can use your own OpenSky Network credentials for better API access.

To enable it, set this in your server/.env:

BYOK=true

When enabled:

  • Without credentials: Limited API access (10 requests/min)
  • With credentials: Full API access

Users can enter their OpenSky credentials through the UI. Credentials are validated, stored in a session token (24h expiry), and never logged.

Docker

# Build and run
docker compose up --build

# Or detached
docker compose up -d --build

# Stop
docker compose down
Service URL Port
Frontend http://localhost:4173 4173
Backend http://localhost:8080 8080

Create a .env file in the project root:

OPENSKY_CLIENT_ID=your_client_id
OPENSKY_CLIENT_SECRET=your_client_secret

Dashboard

Aether includes a built-in dashboard for monitoring server status, viewing logs, and managing processes.

  • URL: http://localhost:8081
  • Features:
    • Start/Stop servers
    • View real-time logs (Backend, Frontend)
    • Toggle Debug Mode
    • Monitor OpenSky API connection status

To run the dashboard independently:

npm run dashboard

(Note: The dashboard starts automatically when running npm run dev via the start script).

Controls

Action Desktop VR Controller
Move Camera Mouse Drag Thumbstick
Select Flight Left Click Laser Pointer + Trigger
Calibrate Direction Left Trigger + Rotate
Change Mode UI Buttons UI Buttons (in browser)

Project Structure

Aether/
├── client/              # React app (Vite)
│   ├── src/
│   │   ├── components/  # 3D & UI components
│   │   └── hooks/       # Flight data logic
├── server/              # Node.js Express API
│   ├── src/
│   │   └── services/    # Data fetching & caching
├── shared/              # Shared types
├── docker-compose.yml
└── README.md

License

MIT — see LICENSE for details.


Built by Eduard Šimon
Data provided by OpenSky Network

About

Aether. An Immersive Real-Time VR Flight Tracker.

Resources

License

Contributing

Stars

Watchers

Forks