How luismar-ing/lunav works
LuNAV is a browser-based lunar landing-site planner backed by an offline Python data pipeline. Users select a site, arrival date, and stay; the app presents sunlight and Earth-visibility conditions, supports plan comparison, and can show a selected mission in a 3D scene or panorama. Educator chapters and challenge experiences are additional product paths. The README documents pipeline outputs and the browser workflow; some internal pipeline and view connections are not shown in the sampled source, so those links are omitted or marked unverified.
Main entry points: build_all.py Data build orchestration · PlannerView.tsx Mission planner · App.tsx Application shell · appStore.ts App state
Components 31
App and planning
- Application shell
web/src/App.tsx - Mission planner
web/src/views/PlannerView.tsx - Site assessment
web/src/components/MissionSidebar.tsx - Plan comparison
web/src/views/CompareView.tsx - Educator chapters
web/src/views/EducatorView.tsx - Mission challenge
web/src/views/Challenge.tsx - Date calendar
web/src/views/Calendar.tsx - App state
web/src/store/appStore.ts
Mission analysis
- Browser data loader
web/src/lib/data.ts - Plan calculations
web/src/lib/mission.ts - Site metrics
web/src/lib/siteBrief.ts - Plan constraints
web/src/lib/constraints.ts
Mission visualization
- Scene host
web/src/scene3d/SceneHost.tsx - 3D renderer
web/src/scene3d/renderer.ts - Lunar terrain
web/src/scene3d/terrain.ts - Launch animation
web/src/scene3d/launch.ts - Horizon panorama
web/src/views/Panorama.tsx
Offline data pipeline
- Data build orchestration
pipeline/build_all.py - Candidate sites
pipeline/regions.py - Elevation model
pipeline/dem.py - Site features
pipeline/site_features.py - Sun and Earth positions
pipeline/ephemeris.py - Visibility analysis
pipeline/visibility.py - Mission windows
pipeline/windows.py - Mission trajectories
pipeline/trajectory.py
Data validation
- Data schemas
web/src/lib/contract.ts - Dataset validator
pipeline/validate.py
Other components
- Planner or learner
- NASA/JPL SPICE kernels
- LRO LOLA terrain data
- Precomputed app data
web/public/data
Connections 31
- Planner or learner → Application shell: opens
README.md - Application shell → Mission planner: routes to
web/src/App.tsx - Application shell → Educator chapters: routes to
web/src/App.tsx - Application shell → Mission challenge: routes to
web/src/App.tsx - Application shell → App state: loads core
web/src/App.tsx - Mission planner → App state: selects plans
- Mission planner → Date calendar: chooses dates
- Mission planner → Site assessment: shows assessment
- Site assessment → Site metrics: uses metrics
web/src/components/MissionSidebar.tsx - Mission planner → Plan comparison: pins plans
README.md - App state → Browser data loader: loads data
web/src/store/appStore.ts - Browser data loader → Data schemas: validates data
web/src/lib/data.ts - App state → Plan constraints: builds windows
web/src/store/appStore.ts - App state → Plan calculations: tracks mission
web/src/lib/mission.ts - Mission planner → Scene host: opens site view
- Scene host → 3D renderer: mounts scene
- 3D renderer → Lunar terrain: loads terrain
web/src/scene3d/renderer.ts - 3D renderer → Launch animation: uses launch state
web/src/scene3d/renderer.ts - Mission planner → Horizon panorama: opens panorama
README.md - Data build orchestration → Precomputed app data: generates data
README.md - Elevation model → LRO LOLA terrain data: reads elevation
- Sun and Earth positions → NASA/JPL SPICE kernels: reads kernels
pipeline/ephemeris.py - Data build orchestration → Candidate sites: builds site data
- Data build orchestration → Elevation model: builds terrain data
- Data build orchestration → Site features: builds features
- Data build orchestration → Sun and Earth positions: builds positions
- Data build orchestration → Visibility analysis: builds visibility
- Data build orchestration → Mission windows: builds windows
- Data build orchestration → Mission trajectories: builds trajectories
- Data build orchestration → Dataset validator: validates output
- Dataset validator → Data schemas: checks schema
pipeline/validate.py