# Attribution — Live

Live is built on public orbital data, NASA/ESA imagery, and open-source libraries.

## Orbital Data

### CelesTrak

- **What we use:** Two-Line Element (TLE) sets for actively tracked Earth-orbiting objects
- **Endpoint:** `https://celestrak.org/NORAD/elements/gp.php?GROUP=active&FORMAT=tle`
- **Maintainer:** Dr. T. S. Kelso, Center for Space Standards & Innovation
- **Website:** [https://celestrak.org/](https://celestrak.org/)
- **Notes:** Verify [CelesTrak terms](https://celestrak.org/) before commercial redistribution of derived products.

A bundled snapshot lives at `public/data/tle-snapshot.txt`.

## Launch Schedule Data

### The Space Devs — Launch Library 2

- **What we use:** upcoming rocket launch schedule data — mission name, provider,
  rocket, launch pad, NET (no-earlier-than) time, status, and webcast links — shown
  on the `/launches` page.
- **Endpoint:** `https://ll.thespacedevs.com/2.2.0/launch/upcoming/`, proxied and
  trimmed server-side by `functions/api/launches.ts` before it reaches the browser.
- **Website:** [https://thespacedevs.com/](https://thespacedevs.com/) ·
  [https://ll.thespacedevs.com/](https://ll.thespacedevs.com/)
- **License:** CC BY 4.0

## Space Weather Data

### NOAA Space Weather Prediction Center (SWPC)

- **What we use:** the planetary Kp index (current estimate) and a 3-day
  geomagnetic forecast — shown on the `/aurora` page as the current storm
  level, NOAA G-scale, and a latitude-based aurora visibility verdict.
- **Endpoints:** `https://services.swpc.noaa.gov/products/noaa-planetary-k-index.json`
  and `https://services.swpc.noaa.gov/products/noaa-planetary-k-index-forecast.json`,
  proxied and normalized server-side by `functions/api/space-weather.ts` before
  either reaches the browser.
- **Website:** [https://www.swpc.noaa.gov/](https://www.swpc.noaa.gov/)
- **License:** Public domain (US Government work, NOAA)

## Space & Earth Imagery (bundled)

### NASA Blue Marble: Next Generation (day map)

- **File:** `public/textures/earth-day.jpg` (derived 4096×2048 JPEG)
- **Source:** [Blue Marble: Next Generation with Topography and Bathymetry](https://visibleearth.nasa.gov/images/73909/december-blue-marble-next-generation-w-topography-and-bathymetry) — December 2004 global mosaic
- **Original URL:** `https://eoimages.gsfc.nasa.gov/images/imagerecords/73000/73909/world.topo.bathy.200412.3x5400x2700.jpg` (full-res 5400×2700 source)
- **Credit:** NASA Earth Observatory (Reto Stöckli, Robert Simmon, et al.)
- **License:** NASA imagery — public domain / free for use with credit

### NASA Black Marble 2016 (night lights)

- **Files:** `public/textures/earth-night.jpg` (derived 4096×2048 JPEG via `fetch-textures.yml`) and `earth-night-8192.jpg`, an 8192×4096 rendition of the same source that desktop-class devices progressively upgrade to
- **Source:** [Earth at Night / Black Marble flat maps — 2016](https://science.nasa.gov/earth/earth-observatory/earth-at-night/maps/)
- **Original URL:** `https://eoimages.gsfc.nasa.gov/images/imagerecords/144000/144898/BlackMarble_2016_3km.jpg` (full-res 13500×6750 source)
- **Credit:** NASA Earth Observatory
- **License:** NASA imagery — credit NASA Earth Observatory

### NASA Visible Earth — Blue Marble clouds

- **File:** `public/textures/earth-clouds.jpg` (derived 4096×2048 JPEG)
- **Source:** [Blue Marble Clouds](https://visibleearth.nasa.gov/images/57747/blue-marble-clouds) (`cloud_combined_2048.jpg`)
- **Credit:** NASA Earth Observatory
- **Usage:** Opacity / albedo for the cloud layer in the Earth shader (Sprint A)

### NASA SVS — Deep Star Maps 2020 (Milky Way all-sky backdrop)

- **File:** `public/textures/starmap-svs.jpg` (derived 4096×2048 JPEG)
- **Source:** [NASA Scientific Visualization Studio — Deep Star Maps 2020](https://svs.gsfc.nasa.gov/4851/) (SVS 4851), celestial `starmap_2020_8k.exr` (8192×4096 linear EXR) → display sRGB 4096×2048 (resized in linear light, exposure matched against NASA's own preview rendition) by `.github/workflows/fetch-textures.yml`
- **Credit:** NASA Scientific Visualization Studio
- **License:** NASA imagery — public domain
- **Notes:** Equirectangular in J2000 RA/Dec (RA 0h at center increasing leftward, Dec +90° at top). `src/lib/space-background.ts` samples it by right ascension/declination, rotating scene directions from equator-of-date to J2000; alignment verified against the Yale Bright Star Catalog overlay (16/16 first-magnitude stars within 2 px).

**Previously used (historical credit):** `public/textures/milky-way-gaia.jpg`, [Gaia's sky in colour — equirectangular projection](https://sci.esa.int/web/gaia/-/60196-gaia-s-sky-in-colour-equirectangular-projection), credit ESA/Gaia/DPAC, CC BY-SA 3.0 IGO, based on measurements of ~1.7 billion stars. It served as the space backdrop until the NASA SVS swap above and was removed from the project on 2026-08-28 (no Gaia-derived pixels remain; `starmap-svs.jpg` derives solely from the NASA SVS source).

### NASA LRO/LROC + LOLA — Moon

- **Files:** `public/textures/moon-color.jpg`, `public/textures/moon-color-8192.jpg`, `public/textures/moon-height.jpg`
- **Source:** [NASA SVS CGI Moon Kit](https://svs.gsfc.nasa.gov/4720/)
- **Color:** LROC WAC natural-colour mosaic (`lroc_color_poles_4k.tif`), adjusted by NASA SVS to more closely match human vision, 4096×2048 TIFF → JPEG; the same mosaic's `lroc_color_poles_8k.tif` gives the 8192×4096 `moon-color-8192.jpg` that desktop-class devices progressively upgrade to when the Moon is focused
- **Relief:** LOLA global elevation data (`ldem_4.tif`, 1440×720), used for subtle geometric displacement, resized to 2048×1024 JPEG
- **Credit:** NASA Scientific Visualization Studio; Ernie Wright (USRA); Noah Petro (NASA/GSFC); LRO/LROC and LOLA teams
- **Rendering:** Moon position, distance, apparent size, phase illumination, and libration follow the simulation time. The mean radius is 1737.4 km against Earth's 6371 km scene radius.

### NASA Solar Dynamics Observatory — Sun

- **Files:** `public/textures/sun-sdo.jpg`, `public/textures/sun-corona-aia.jpg`
- **Source:** [NASA SDO — The Sun Now](https://sdo.gsfc.nasa.gov/data/)
- **Photosphere:** HMI continuum (`latest_4096_HMIIC.jpg`), native 4096×4096, refreshed by `fetch-textures.yml` — a current-conditions image, not a fixed archive frame
- **Corona overlay:** AIA 171 Å (`latest_4096_0171.jpg`), native 4096×4096, refreshed by `fetch-textures.yml`, remapped in-shader from EUV false colour toward pearly white/gold streamers
- **Credit:** NASA/SDO and the HMI & AIA science teams
- **Rendering:** Simulation-time geocentric sky direction. Disk sits on a visual sky shell with ~0.53° apparent diameter; shell distance is not the physical Earth–Sun AU.

### Mars — Viking global colour mosaic (primary USGS source)

- **Files:** `public/textures/mars.jpg` (4096×2048 equirectangular) and `mars-8192.jpg`, an 8192×4096 rendition of the same download for the focused-body progressive upgrade
- **Source:** [USGS Astrogeology — Mars Viking Global Color Mosaic 925m](https://planetarymaps.usgs.gov/mosaic/Mars_Viking_ClrMosaic_global_925m.tif) (23059×11530 GeoTIFF, ~761 MB), streamed down to 4096×2048 by `.github/workflows/fetch-textures.yml` — survey run 33285040262 documents the URL/dimension proof
- **Credit:** NASA/JPL/USGS Astrogeology Science Center
- **License:** NASA/USGS imagery — public domain
- **Rendering:** True simulation-time geocentric sky direction and Sun-relative phase lighting; display size is enhanced so Mars remains visible in an Earth-scale scene.

### Venus — Magellan radar mosaic (primary USGS source)

- **Files:** `public/textures/venus-radar.jpg` (4096×2048 equirectangular) and `venus-radar-8192.jpg`, the source mosaic at its native 8192×4096 for the focused-body progressive upgrade
- **Source:** [USGS Astrogeology — Magellan Global C3-MDIR Synthetic Color Mosaic 4641m](https://planetarymaps.usgs.gov/mosaic/Venus_Magellan_C3-MDIR_Colorized_Global_Mosaic_4641m.tif) (8192×4096 GeoTIFF, ~96 MB), resized to 4096×2048 by `.github/workflows/fetch-textures.yml`
- **Credit:** NASA/JPL/USGS Astrogeology Science Center
- **License:** NASA/USGS imagery — public domain
- **Important:** This is a synthetic-colour radar mosaic — a radar-derived surface visualization, not an optical view through Venus's clouds.
- **Rendering:** True simulation-time geocentric sky direction and Sun-relative phase lighting; radar returns also drive soft relief/AO so ridges read as topography.

### Jupiter — Cassini cylindrical global map (primary NASA source)

- **File:** `public/textures/jupiter.jpg` (3601×1801 equirectangular)
- **Source:** [PIA07782 — Cassini's Best Maps of Jupiter (Cylindrical Map)](https://photojournal.jpl.nasa.gov/catalog/PIA07782), fetched from the catalog page's own full-resolution asset URL by `.github/workflows/fetch-textures.yml`
- **Credit:** NASA/JPL/Space Science Institute
- **License:** NASA imagery — public domain

### Pluto — New Horizons global colour mosaic (primary NASA source)

- **File:** `public/textures/pluto.jpg` (4096×2048 equirectangular)
- **Source:** [PIA11707 — Pluto Color Map](https://images-api.nasa.gov/search?nasa_id=PIA11707) (NASA Image and Video Library), the New Horizons Ralph/MVIC global colour mosaic from the July 2015 flyby, full-res 5926×2963 asset fetched by `.github/workflows/fetch-textures.yml`
- **Credit:** NASA/JHUAPL/SwRI
- **License:** NASA imagery — public domain
- **Notes:** The July 2015 flyby left Pluto's winter-dark south polar region un-imaged; NASA's mosaic is black (no data) there. The fetch workflow fills only that void with a featureless blend of the real boundary colours — never invented terrain — so the rendered globe has no false-looking black cap while every imaged pixel remains exactly NASA's.

### Mercury, Saturn — bundled basemaps (since PR #42)

- **Files:** `public/textures/mercury.jpg`, `saturn.jpg`, `saturn-rings.jpg`
  (2048×1024 equirectangular; ring strip for Saturn)
- **Source:** community-redistributed basemaps with heritage from NASA mission products
  (Mercury: MESSENGER; Saturn + rings: Cassini), via the threex.planets texture
  collection. Positions, distances and live apparent magnitude still come from
  Astronomy Engine, exactly as before.
- **License chain:** community redistribution — see `public/textures/SOURCES.md` for the
  per-file table. A documented NASA-hosted global map replaces a file the moment one is
  proven to exist (that is how Jupiter's and Pluto's were upgraded); five survey rounds
  across Photojournal, USGS, and the NASA Image Library found none for these two —
  Mercury's only NASA-hosted global map is enhanced false colour (rejected: not what the
  eye sees), and no global Saturn cylindrical map is published at all.

### Additional imagery

Mars & Venus maps were Solar System Scope (CC-BY-4.0) re-renders until 2026-08-30, when the USGS Astrogeology primary mosaics above replaced them (historical credit retained here, Gaia-swap precedent).

Navigation-layer satellite badge: GPS Block III artist's rendering, U.S. Air Force (public domain), via Wikimedia Commons; background removed for in-app use.

Raw downloads (optional, not required at runtime) may live under `public/textures/src/`.

## Esri World Imagery — sky-mode ground tiles

- **What we use:** an optional, runtime-fetched true-color ground patch for the
  Explore Sky / Live Sky AR ground shell's near field, used when the High or
  Balanced quality preset is active.
- **Service:** [Esri World Imagery](https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer)
  (ArcGIS Online), part of Esri's public basemap services
- **Endpoint:** `https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}`
  (Web Mercator tiles, zoom 15–16, ~2–5 m/px)
- **Required credit:** Esri, Maxar, Earthstar Geographics, and the GIS User Community
- **Notes:** fetched only while sky mode is open, aborted on exit; the Battery quality
  preset uses NASA GIBS instead (see below), and any Esri failure falls back to GIBS
  and then to the bundled equirect ground — this layer only ever sharpens, never
  replaces, the always-available real-location albedo. See `src/lib/ground-imagery.ts`
  and `src/lib/quality-preset.ts`.

## NASA GIBS — runtime ground imagery (AR sky-view)

- **What we use:** an optional, runtime-fetched true-color patch for the AR ground shell's
  near field (~30 km across, ~38 m/px), on top of the bundled Blue Marble/Black Marble ground
  albedo described above (which already works with zero network access).
- **Service:** [NASA GIBS](https://www.earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs)
  (Global Imagery Browse Services), part of NASA EOSDIS
- **Layer:** `Landsat_WELD_CorrectedReflectance_TrueColor_Global_Annual` — the Web-Enabled
  Landsat Data (WELD) global annual true-color composite
- **Endpoint:** `https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/Landsat_WELD_CorrectedReflectance_TrueColor_Global_Annual/default/2021-01-01/GoogleMapsCompatible_Level12/{z}/{y}/{x}.jpg`
  (WMTS REST, EPSG:3857 Web Mercator, zoom 12)
- **License:** NASA/USGS imagery — public domain, no API key required
- **Notes:** fetched only while the AR ground view is open, aborted on exit; any failure
  (offline, CORS, slow response, bad decode) silently falls back to the bundled equirect
  ground — this layer only ever sharpens, never replaces, the always-available real-location
  albedo. See `src/lib/ground-imagery.ts` and `public/textures/SOURCES.md`.

## Open-Meteo — weather & geocoding

- **What we use:** current weather (per-layer cloud cover, wind, visibility) driving
  the simulated sky dome in Explore Sky, and city-name search for setting an
  observer location.
- **Service:** [Open-Meteo](https://open-meteo.com/) — free, keyless, CORS-open APIs
- **Endpoints:** `https://api.open-meteo.com/v1/forecast` (weather) and
  `https://geocoding-api.open-meteo.com/v1/search` (place-name search)
- **Note:** Open-Meteo's API is free for non-commercial use; WatchSat currently
  relies on that free tier, and whether a paid commercial plan is needed as usage
  grows is a pending decision — see open-meteo.com for current terms rather than
  treating this note as a legal determination.
- **Privacy:** requests send only rounded coordinates (weather) or the place name
  you type (geocoding) — never a visitor's stored pass-prediction location. See
  `src/lib/sky-weather.ts`, `src/lib/geocode.ts`, and the privacy policy.

## Libraries

### satellite.js

- **Role:** SGP4/SDP4 propagation
- **Repository:** [https://github.com/shashwatak/satellite-js](https://github.com/shashwatak/satellite-js)
- **License:** MIT

### Three.js

- **Role:** WebGL rendering, controls, post-processing
- **Website:** [https://threejs.org/](https://threejs.org/)
- **License:** MIT

### Astronomy Engine

- **Role:** Geocentric/heliocentric ephemerides, precession to equator-of-date coordinates, and lunar libration
- **Repository:** [https://github.com/cosinekitty/astronomy](https://github.com/cosinekitty/astronomy)
- **License:** MIT

## In-App Credit

HUD copy credits CelesTrak TLE × SGP4. Imagery credits are maintained in this file and `public/textures/SOURCES.md`.

## ESA Hipparcos Catalogue — dense real star field

- File: `public/data/stars-hip.bin` (~79,000 stars to Vmag ≤ 9.0; a 4-byte
  little-endian star-count header followed by 6-byte quantized records: RA u16,
  Dec i16, Vmag u8 (0.05-mag steps), color temperature u8 (128 K steps),
  little-endian, J2000 — sub-pixel at the app's narrowest FOV; the loader also
  still accepts the earlier 12-byte f32 layout)
- Source: ESA, 1997, "The Hipparcos and Tycho Catalogues" — the Hipparcos main
  catalogue, CDS catalogue [I/239](https://cdsarc.cds.unistra.fr/viz-bin/cat/I/239)
  (`hip_main.dat`), public data
- Credit: European Space Agency (Hipparcos mission); catalogue curated by CDS
  (Centre de Données astronomiques de Strasbourg)
- Processing: `scripts/pack-hipparcos.mjs` filters to finite RA/Dec/Vmag with
  Vmag ≤ 9.0, propagates each position from the catalogue's native epoch
  (J1991.25) to J2000.0 using its own proper motion, and converts the B−V
  color index to a display Kelvin temperature via the Ballesteros (2012)
  formula. Fetched and packed on a schedule by
  `.github/workflows/fetch-star-catalog.yml`.
- Rendering note: this is the primary real star field — fine real grain at
  every zoom instead of thinning out to the painted Milky Way map, with
  brightness from each star's real visual magnitude through the same
  light-pollution and daylight physics as everything else.

## Yale Bright Star Catalog — fallback star field

- File: `public/stars-bsc5.bin` (9,096 stars, 12 bytes each: RA °f32, Dec °f32,
  Vmag ×100 i16, color temperature K u16, little-endian, J2000)
- Source: Yale Bright Star Catalog (BSC5) via the MIT-licensed JSON packaging at
  github.com/brettonw/YaleBrightStarCatalog (`bsc5-short.json`, commit abffb3b)
- Credit: Hoffleit & Warren, Yale University Observatory; packaging (c) 2016
  Bretton Wade, MIT
- Rendering note: `src/lib/star-catalog.ts` loads the denser Hipparcos catalog
  above first and falls back to this bundled 9,096-star set only if that fetch
  fails — both replace the former procedurally-generated star overlay, which
  remains only as the last-resort fallback if neither real catalog loads.

## Welcome-page hero images

Two NASA public-domain images, committed as the files were supplied — no crop,
no resize, no re-encode on our side. All placement is CSS. Both live under
`src/assets/` and are imported by `Welcome.tsx`, so Vite emits them as
fingerprinted `/assets/welcome-*-<hash>.jpg` URLs (cache-busting on every swap).

- File: `src/assets/welcome-night.jpg` (7680×4320, ~14.4 MB, committed
  byte-for-byte) — the landing hero. NASA astronaut photograph from the
  International Space Station by Scott Kelly, "Italy and the Alps at night"
  (Expedition 46, January 2016; NASA Johnson Flickr 24609284564): the Italian
  peninsula lit at night with the Alps to the north and airglow on the limb.
  This 8K rendition is the one spacex.com serves as the hero of its Human
  Spaceflight → Earth page (`earth_feature.jpg` on SpaceX's CMS) — the page
  ayaqen's 2000×1125 wallpaper came from. Identified by ORB/RANSAC feature
  matching against that wallpaper (3784 of 3979 possible inliers) and fetched
  on the GitHub runner on 2026-09-03. Gateway frame `ISS046-E-24329`
  (4928×3280), shipped briefly in September 2026 as this image's
  "full-resolution original", is a DIFFERENT exposure from the same pass and
  was removed.
- File: `src/assets/welcome-globe.jpg` (3718×3718, ~2.9 MB — the Wikimedia Commons
  original, `File:Blue Marble Eastern Hemisphere.jpg`) — the full-screen panel
  after the hero, behind the live numbers. NASA **Blue Marble (2002), Eastern
  Hemisphere** composite (NASA Goddard Space Flight Center; Reto Stöckli et
  al.), the classic full-disc view with Australia and Southeast Asia on black.
- Credit: NASA (night photograph: ISS Expedition 46 crew, via NASA Johnson's
  Gateway to Astronaut Photography of Earth; Blue Marble: NASA GSFC, via its
  Wikimedia Commons file page) — public domain as NASA works.
- Rendering note: both sit under the landing page as CSS backgrounds so a
  missing file degrades to the space-black base color (no broken-image icon);
  the hero carries a bottom gradient for legibility of the white copy.

## Typeface

### D-DIN (Datto Inc.)

`src/assets/fonts/D-DIN.woff2` and `D-DIN-Bold.woff2` — the typeface spacex.com is set in
(owner direction 2026-09-04: match SpaceX's font, colour, size and style). Copyright (c) 2017
Datto Inc., Reserved Font Name "D-DIN", licensed under the SIL Open Font License 1.1; the full
licence text ships alongside in `src/assets/fonts/OFL.txt`. Self-hosted from this origin only.
