# bhuvan-reddy-07/pluton-nsa architecture

> Architecture diagram of the GitHub repository bhuvan-reddy-07/pluton-nsa, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bhuvan-reddy-07/pluton-nsa
- Repository: https://github.com/bhuvan-reddy-07/pluton-nsa

## Overview

PLUTON is a browser-based lunar south-pole mission planning and analysis suite. Users configure a landing site, hardware, mast, and mission window; the app computes terrain horizons and mission physics, then presents assessment, launch-planning, event, timeline, and visualization views. Separate data-center and dataset-explorer features expose ephemeris and lunar PDS data, while documented integrations include Horizons, WebGeocalc, STK, Cosmographia, QuickMap, and Moon Trek. The main page and selected engines were excerpted; several integrations and views are represented from the README and SOURCE INDEX, so their internal call paths are not asserted.

Main entry points: [`src/app/page.tsx`](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/app/page.tsx) (Mission planner), [`src/engine/missionPhysicsEngine.ts`](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/missionPhysicsEngine.ts) (Mission physics), [`src/api/horizons/route.ts`](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/api/horizons/route.ts) (Horizons proxy), [`src/api/ode/route.ts`](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/api/ode/route.ts) (ODE proxy)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Mission workspace"]
  node_planner["Mission planner<br/>[page.tsx]"]
  node_assessment["Assessment view<br/>[AssessmentView.tsx]"]
  node_launch["Launch planning"]
  node_events["Mission events"]
  node_timeline["Mission timeline"]
  node_slipplot["Launch slip plot"]
end

subgraph group_analysis["Mission analysis"]
  node_physics["Mission physics"]
  node_ephemeris["Ephemeris solver<br/>[ephemerisSolver.ts]"]
  node_horizon["Terrain horizon"]
  node_intervals["Event intervals"]
  node_sitecompare["Site comparison"]
end

subgraph group_visualization["Lunar visualization"]
  node_terrain3d["Terrain 3D<br/>[PolarTerrain3D.tsx]"]
  node_panorama["Sky panorama"]
  node_moonmodel["Lunar model"]
end

subgraph group_data["Data and integrations"]
  node_horizonsui["Horizons center"]
  node_odeui["ODE explorer"]
  node_sites[("Site and hardware data<br/>[lunarDatabase.ts]")]
  node_de441[("DE441 data")]
  node_odedata[("ODE catalog<br/>[odeMoonDatasets.ts]")]
  node_odeengine["ODE service<br/>[odeService.ts]"]
  node_horizonsapi["Horizons proxy<br/>[route.ts]"]
  node_webgeocalc["WebGeocalc service"]
  node_odeapi["ODE proxy<br/>[route.ts]"]
end

node_user(("Mission planner user"))
node_jpl{{"NASA JPL Horizons"}}
node_wustl{{"WUSTL PDS ODE"}}

node_user -->|"configures"| node_planner
node_planner -->|"computes terrain"| node_horizon
node_planner -->|"simulates mission"| node_physics
node_physics -->|"evaluates states"| node_ephemeris
node_physics -->|"updates horizon"| node_horizon
node_planner -->|"renders"| node_assessment
node_planner -->|"renders"| node_launch
node_planner -->|"renders"| node_events
node_planner -->|"renders"| node_timeline
node_planner -->|"renders"| node_slipplot
node_planner -->|"renders"| node_terrain3d
node_planner -->|"renders"| node_panorama
node_launch -->|"renders"| node_slipplot
node_slipplot -->|"uses solver"| node_physics
node_terrain3d -->|"uses model"| node_moonmodel
node_planner -->|"selects site data"| node_sites
node_ephemeris -->|"reads ground truth"| node_de441
node_horizonsui -.->|"queries"| node_horizonsapi
node_horizonsui -->|"validates with"| node_webgeocalc
node_odeui -->|"uses"| node_odeengine
node_odeengine -->|"reads catalog"| node_odedata
node_odeui -.->|"queries"| node_odeapi
node_odeapi -->|"uses catalog"| node_odedata
node_horizonsapi -->|"evaluates locally"| node_ephemeris
node_horizonsapi -->|"fetches ephemeris"| node_jpl
node_odeapi -.->|"proxies requests"| node_wustl

click node_planner "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/app/page.tsx"
click node_assessment "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/AssessmentView.tsx"
click node_launch "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/LaunchPlanningView.tsx"
click node_events "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/MissionEventsView.tsx"
click node_timeline "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/MissionTimelineGantt.tsx"
click node_slipplot "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/LaunchSlipCarpetPlot.tsx"
click node_physics "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/missionPhysicsEngine.ts"
click node_ephemeris "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/ephemerisSolver.ts"
click node_horizon "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/terrainHorizonEngine.ts"
click node_intervals "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/eventIntervalEngine.ts"
click node_sitecompare "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/SiteComparatorDrawer.tsx"
click node_terrain3d "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/PolarTerrain3D.tsx"
click node_panorama "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/SkyDomePanorama.tsx"
click node_moonmodel "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/NasaLroMoonModel.tsx"
click node_horizonsui "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/HorizonsDataCenterModal.tsx"
click node_odeui "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/OdeDatasetExplorerModal.tsx"
click node_sites "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/data/lunarDatabase.ts"
click node_de441 "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/data/jplHorizonsDe441Data.ts"
click node_odedata "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/data/odeMoonDatasets.ts"
click node_odeengine "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/odeService.ts"
click node_horizonsapi "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/api/horizons/route.ts"
click node_webgeocalc "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/webGeocalcService.ts"
click node_odeapi "https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/api/ode/route.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_planner,node_assessment,node_launch,node_events,node_timeline,node_slipplot,node_user toneBlue
class node_physics,node_ephemeris,node_horizon,node_intervals,node_sitecompare toneAmber
class node_terrain3d,node_panorama,node_moonmodel toneMint
class node_horizonsui,node_odeui,node_sites,node_de441,node_odedata,node_odeengine,node_horizonsapi,node_webgeocalc,node_odeapi toneRose
class node_jpl,node_wustl toneIndigo
```

## Components

### Mission workspace

- [Mission planner](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [Assessment view](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/AssessmentView.tsx): `src/components/AssessmentView.tsx`
- [Launch planning](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/LaunchPlanningView.tsx): `src/components/LaunchPlanningView.tsx`
- [Mission events](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/MissionEventsView.tsx): `src/components/MissionEventsView.tsx`
- [Mission timeline](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/MissionTimelineGantt.tsx): `src/components/MissionTimelineGantt.tsx`
- [Launch slip plot](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/LaunchSlipCarpetPlot.tsx): `src/components/LaunchSlipCarpetPlot.tsx`

### Mission analysis

- [Mission physics](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/missionPhysicsEngine.ts): `src/engine/missionPhysicsEngine.ts`
- [Ephemeris solver](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/ephemerisSolver.ts): `src/engine/ephemerisSolver.ts`
- [Terrain horizon](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/terrainHorizonEngine.ts): `src/engine/terrainHorizonEngine.ts`
- [Event intervals](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/eventIntervalEngine.ts): `src/engine/eventIntervalEngine.ts`
- [Site comparison](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/SiteComparatorDrawer.tsx): `src/components/SiteComparatorDrawer.tsx`

### Lunar visualization

- [Terrain 3D](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/PolarTerrain3D.tsx): `src/components/PolarTerrain3D.tsx`
- [Sky panorama](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/SkyDomePanorama.tsx): `src/components/SkyDomePanorama.tsx`
- [Lunar model](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/NasaLroMoonModel.tsx): `src/components/NasaLroMoonModel.tsx`

### Data and integrations

- [Horizons center](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/HorizonsDataCenterModal.tsx): `src/components/HorizonsDataCenterModal.tsx`
- [ODE explorer](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/components/OdeDatasetExplorerModal.tsx): `src/components/OdeDatasetExplorerModal.tsx`
- [Site and hardware data](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/data/lunarDatabase.ts): `src/data/lunarDatabase.ts`
- [DE441 data](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/data/jplHorizonsDe441Data.ts): `src/data/jplHorizonsDe441Data.ts`
- [ODE catalog](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/data/odeMoonDatasets.ts): `src/data/odeMoonDatasets.ts`
- [ODE service](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/odeService.ts): `src/engine/odeService.ts`
- [Horizons proxy](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/api/horizons/route.ts): `src/api/horizons/route.ts`
- [WebGeocalc service](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/engine/webGeocalcService.ts): `src/engine/webGeocalcService.ts`
- [ODE proxy](https://github.com/bhuvan-reddy-07/pluton-nsa/blob/main/src/api/ode/route.ts): `src/api/ode/route.ts`

### Other components

- **Mission planner user**
- **NASA JPL Horizons**
- **WUSTL PDS ODE**

## Connections

- Mission planner user → Mission planner: configures (evidence: `README.md`)
- Mission planner → Terrain horizon: computes terrain (evidence: `src/app/page.tsx`)
- Mission planner → Mission physics: simulates mission (evidence: `src/app/page.tsx`)
- Mission physics → Ephemeris solver: evaluates states (evidence: `src/engine/missionPhysicsEngine.ts`)
- Mission physics → Terrain horizon: updates horizon (evidence: `src/engine/missionPhysicsEngine.ts`)
- Mission planner → Assessment view: renders (evidence: `src/app/page.tsx`)
- Mission planner → Launch planning: renders (evidence: `src/app/page.tsx`)
- Mission planner → Mission events: renders (evidence: `src/app/page.tsx`)
- Mission planner → Mission timeline: renders (evidence: `src/app/page.tsx`)
- Mission planner → Launch slip plot: renders (evidence: `src/app/page.tsx`)
- Mission planner → Terrain 3D: renders (evidence: `src/app/page.tsx`)
- Mission planner → Sky panorama: renders (evidence: `src/app/page.tsx`)
- Launch planning → Launch slip plot: renders (evidence: `src/components/LaunchPlanningView.tsx`)
- Launch slip plot → Mission physics: uses solver (evidence: `src/components/LaunchSlipCarpetPlot.tsx`)
- Terrain 3D → Lunar model: uses model (evidence: `src/components/PolarTerrain3D.tsx`)
- Mission planner → Site and hardware data: selects site data (evidence: `src/app/page.tsx`)
- Ephemeris solver → DE441 data: reads ground truth (evidence: `src/engine/ephemerisSolver.ts`)
- Horizons center → Horizons proxy: queries (evidence: `README.md`)
- Horizons center → WebGeocalc service: validates with (evidence: `src/components/HorizonsDataCenterModal.tsx`)
- ODE explorer → ODE service: uses (evidence: `src/components/OdeDatasetExplorerModal.tsx`)
- ODE service → ODE catalog: reads catalog (evidence: `src/engine/odeService.ts`)
- ODE explorer → ODE proxy: queries (evidence: `README.md`)
- ODE proxy → ODE catalog: uses catalog (evidence: `src/api/ode/route.ts`)
- Horizons proxy → Ephemeris solver: evaluates locally (evidence: `src/api/horizons/route.ts`)
- Horizons proxy → NASA JPL Horizons: fetches ephemeris (evidence: `src/api/horizons/route.ts`)
- ODE proxy → WUSTL PDS ODE: proxies requests (evidence: `README.md`)
