Skip to content

DecodeAndCode/orion-live

Repository files navigation

Orion Live

Real-time mission tracker for NASA's Artemis II crewed lunar flyby. Streams live state vectors from the AROW Community API, renders the Earth-Moon-Orion system, surfaces upcoming maneuvers, and overlays NOAA space-weather data relevant to the crew beyond the magnetosphere.

Live: https://orion-live.vercel.app/

Features

  • Live telemetry strip: MET, distance to Earth, distance to Moon, speed, one-way light delay, mission progress
  • 2D orbital scene with Earth, Moon, full planned trajectory ribbon, and current Orion position (pan + zoom)
  • Mission timeline: past, current, and next events with countdown to the next maneuver
  • Space-weather panel: Kp index, X-ray flare class, SEP threat level from NOAA SWPC
  • Crew panel and mission-phase badge
  • NASA TV live embed
  • Graceful degradation: two-body propagation fallback when AROW is unavailable, with stale-data indicators

Stack

  • Next.js 16 (App Router) + TypeScript (strict) + Tailwind v4
  • shadcn/ui on @base-ui/react
  • SWR for client polling
  • Upstash Redis for server-side caching
  • Zod for runtime validation of every external response
  • date-fns for time math
  • Deployed on Vercel

Data sources

Source Use Cache
AROW Community API Live state vectors (position, velocity, J2000) Redis, 10s TTL
Committed ephemeris (public/data/ephemeris.json) Planned trajectory ribbon Static, immutable
NOAA SWPC Kp, X-ray flux, integral proton flux Redis, 5 min TTL
YouTube (NASA channel) Live broadcast embed n/a

All external fetches are proxied through /api/* routes (no client-side calls to NASA/NOAA) for CORS, caching, and rate-limit protection.

Local setup

git clone https://github.com/<you>/orion-live.git
cd orion-live
cp .env.local.example .env.local   # fill in Upstash creds
npm install
npm run dev

Open http://localhost:3000.

Required environment variables

UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=
AROW_API_BASE=https://api.arow.nasa.gov/community

Create a free Upstash Redis instance at https://upstash.com and paste the REST URL + token.

Scripts

  • npm run dev — local dev server
  • npm run build — production build (copies Cesium static assets first)
  • npm run start — run the built app
  • npm run lint — ESLint

Project layout

app/
  api/{telemetry,space-weather,ephemeris}/route.ts   # cached proxies
  page.tsx, layout.tsx, globals.css
components/
  scene/        # orbital scene
  panels/       # telemetry strip, timeline, crew, space weather, NASA TV
  ui/           # shadcn primitives
lib/
  arow.ts, propagation.ts, spaceWeather.ts, timeline.ts, crew.ts
  redis.ts, types.ts, format.ts, constants.ts
hooks/
  useTelemetry.ts, useSpaceWeather.ts, useMissionClock.ts
public/data/
  ephemeris.json, timeline.json, crew.json

Deploy

Push to GitHub, import the repo on Vercel, set the three env vars above, ship. Cesium assets are copied during the build via scripts/copy-cesium.mjs.

Disclaimer

Not affiliated with NASA. Data is best-effort from public NASA/NOAA endpoints and may be stale or unavailable during outages. For official mission information visit https://www.nasa.gov/artemis-ii/.

About

Real-time mission tracker for NASA Artemis II. Live telemetry, orbital scene, timeline, space weather. https://orion-live.vercel.app

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors