Add star-map Angular app, ETL pipeline, and caveman plugin

Angular 3D star map (galaxy/system/body views, Three.js rendering,
navigation store) plus the NASA ETL tooling that builds the star,
exoplanet and solar-system datasets, Playwright e2e suite, and the
cs:caveman Claude Code plugin (command, agent, skill).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@
This commit is contained in:
2026-08-03 16:50:10 +02:00
parent 1e1b58b0e9
commit d7e8ea1d4d
99 changed files with 5513 additions and 1 deletions
+32
View File
@@ -0,0 +1,32 @@
/**
* Osculating Keplerian orbital elements at a reference epoch. Positions are derived
* client-side by propagating these elements forward/backward from `epochJd` (see
* `shared/astro/kepler.ts`), rather than fetching per-frame positions.
*/
export interface OrbitalElements {
semiMajorAxisAu: number;
eccentricity: number;
inclinationDeg: number;
longitudeOfAscendingNodeDeg: number;
argumentOfPeriapsisDeg: number;
meanAnomalyAtEpochDeg: number;
epochJd: number;
}
/**
* A solar-system planet, moon, or dwarf planet, sourced from JPL Horizons/SSD orbital
* elements. `systemStarId` links back to the HYG star index (the Sun, see `SUN_STAR_ID`).
*/
export interface BodyRecord {
id: string;
systemStarId: number;
name: string;
kind: 'planet' | 'moon' | 'dwarf';
radiusKm: number;
orbit: OrbitalElements;
/**
* For `kind: 'moon'`, the `id` of the planet it orbits — its `orbit` is expressed
* relative to that planet, not heliocentrically. Undefined for planets/dwarfs.
*/
parentBodyId?: string;
}
+16
View File
@@ -0,0 +1,16 @@
import { OrbitalElements } from './body.model';
/**
* A confirmed exoplanet from the NASA Exoplanet Archive (`Planetary Systems` TAP table),
* cross-referenced to its host star in the HYG index where possible.
*/
export interface ExoplanetRecord {
id: string;
hostStarId: number | null; // null if the host star could not be cross-referenced to HYG
hostStarName: string;
name: string;
radiusEarth?: number;
massEarth?: number;
discoveryYear?: number;
orbit: Partial<OrbitalElements>;
}
+19
View File
@@ -0,0 +1,19 @@
/**
* A single star from the HYG (Hipparcos/Yale/Gliese) catalog, positioned relative to the
* Sun in the galaxy-scale coordinate system (parsecs). The same positions are also packed
* into a compact binary buffer (`stars.bin`, in index order) for fast bulk rendering; this
* record format (`stars-index.json`) is used for search, labels, and lookups by id/name.
*/
export interface StarRecord {
id: number;
name: string;
x: number;
y: number;
z: number;
magnitude: number;
spectralType: string;
colorIndex: number;
}
/** HYG id used for the Sun itself, so solar-system bodies can reference their host star. */
export const SUN_STAR_ID = 0;