How ricardoarg23/moonset works
MoonSet helps users assess lunar surface lighting and direct-to-Earth visibility at a chosen site and date. The main workflow is site or coordinate selection, API evaluation, and visualization of the resulting horizon, status, timeline, and comparisons; the planner also exposes calculation parameters. The backend combines ephemerides, terrain horizon, and derived metrics. The README documents a no-server mode using precalculated results, but the sampled excerpts do not show its detailed loading path or all comparison behavior.
Main entry points: App.jsx MoonSet app · servicio.py Evaluation service · datos.js Data client · VistaPanoramica.jsx 360° panorama
Components 21
User interface
- MoonSet app
frontend/src/App.jsx - Data client
frontend/src/api/datos.js - Site selector
frontend/src/componentes/SelectorSitio.jsx - 360° panorama
frontend/src/componentes/VistaPanoramica.jsx - Status panel
frontend/src/componentes/PanelEstado.jsx - Timeline
frontend/src/componentes/LineaDeTiempo.jsx - Site comparison
frontend/src/componentes/Comparacion.jsx - Canvas sizing
frontend/src/componentes/useCanvas.js - Time utilities
frontend/src/utils/tiempo.js
API and orchestration
- HTTP API
backend/app/main.py - Site catalog
backend/app/sitios.py - Evaluation service
backend/app/servicio.py - Runtime configuration
backend/app/config.py
Lunar calculations
- Sun/Earth positions
backend/app/efemerides.py - Terrain horizon
backend/app/horizonte.py - Light/link metrics
backend/app/metricas.py
Mission data
- Curated sites
data/sitios.json - Precomputed evaluations
data/precalculado
Other components
- Mission user
- JPL DE421 kernels
- LOLA terrain DEM
Connections 23
- Mission user → MoonSet app: chooses site
frontend/src/App.jsx - MoonSet app → Data client: requests data
frontend/src/App.jsx - MoonSet app → Site selector: renders
frontend/src/App.jsx - MoonSet app → 360° panorama: renders
frontend/src/App.jsx - MoonSet app → Status panel: renders
frontend/src/App.jsx - MoonSet app → Timeline: renders
frontend/src/App.jsx - MoonSet app → Site comparison: renders
frontend/src/App.jsx - 360° panorama → Canvas sizing: draws with
frontend/src/componentes/VistaPanoramica.jsx - Timeline → Canvas sizing: draws with
frontend/src/componentes/LineaDeTiempo.jsx - 360° panorama → Time utilities: interpolates horizon
frontend/src/componentes/VistaPanoramica.jsx - Timeline → Time utilities: formats dates
frontend/src/componentes/LineaDeTiempo.jsx - Site comparison → Time utilities: formats values
frontend/src/componentes/Comparacion.jsx - Data client → HTTP API: calls API
README.md - Data client → Precomputed evaluations: uses in no-server mode
README.md - HTTP API → Site catalog: loads sites
backend/app/main.py - HTTP API → Evaluation service: evaluates request
backend/app/main.py - Site catalog → Curated sites: reads
backend/app/sitios.py - Evaluation service → Sun/Earth positions: calculates positions
backend/app/servicio.py - Evaluation service → Terrain horizon: gets horizon
backend/app/servicio.py - Evaluation service → Light/link metrics: computes metrics
backend/app/servicio.py - Light/link metrics → Terrain horizon: samples elevations
backend/app/metricas.py - Sun/Earth positions → JPL DE421 kernels: loads kernels
backend/app/efemerides.py - Terrain horizon → LOLA terrain DEM: samples terrain
backend/app/horizonte.py