# ahammad204/nasa-moon architecture

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

- Interactive diagram: https://gitdiagram.com/ahammad204/nasa-moon
- Repository: https://github.com/ahammad204/nasa-moon

## Overview

CLPS Lunar Mission Browser is a static React application for exploring verified lunar mission and science data. Users enter through routed pages, then browse and filter missions, inspect sourced mission records and map locations, compare deliveries, or explore payloads. A separate site-selection workflow computes Sun/Earth conditions and windows for Navigator and South Pole views; the feature explorer filters and visualizes the USGS lunar gazetteer. The README documents further science-story pages and the Research Library. Edges are limited to routes, sampled imports, and README-documented behavior; unsampled subsystem internals are not assumed.

Main entry points: [`src/App.tsx`](https://github.com/ahammad204/nasa-moon/blob/main/src/App.tsx) (Route Shell), [`src/pages/FeaturesPage.tsx`](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/FeaturesPage.tsx) (Feature Explorer), [`src/lib/missions.ts`](https://github.com/ahammad204/nasa-moon/blob/main/src/lib/missions.ts) (Mission Records), [`src/pages/NavigatorPage.tsx`](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/NavigatorPage.tsx) (Sun Earth Navigator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_routes["Route Shell<br/>[App.tsx]"]
end

subgraph group_missions["Mission Browser"]
  node_mission_data[("Mission Records<br/>[missions.ts]")]
  node_mission_list["Mission List<br/>[ListPage.tsx]"]
  node_mission_detail["Mission Detail"]
  node_moon_map["Moon Map<br/>[MapPage.tsx]"]
  node_compare["Mission Compare<br/>[ComparePage.tsx]"]
  node_payloads["Payload Explorer<br/>[PayloadsPage.tsx]"]
end

subgraph group_navigation["Site Conditions"]
  node_navigator["Sun Earth Navigator<br/>[NavigatorPage.tsx]"]
  node_nav_state["Navigator URL State"]
  node_astro["Astronomy Engine<br/>[window.ts]"]
  node_sites[("Site Records<br/>[sites.ts]")]
  node_south_pole["South Pole Sites<br/>[SouthPolePage.tsx]"]
  node_hazards["Hazard Briefings<br/>[HazardBriefing.tsx]"]
end

subgraph group_features["Lunar Features"]
  node_feature_page["Feature Explorer<br/>[FeaturesPage.tsx]"]
  node_feature_filters["Feature Filters"]
  node_feature_engine["Feature Engine<br/>[engine.ts]"]
  node_feature_density["Density Grid<br/>[density.ts]"]
  node_feature_globe["Feature Globe<br/>[FeaturesGlobe.tsx]"]
  node_feature_map["Feature Map<br/>[FeaturesMap.tsx]"]
end

subgraph group_science["Science Explorer"]
  node_home["Home<br/>[HomePage.tsx]"]
  node_library["Research Library<br/>[LibraryPage.tsx]"]
  node_why_pole["Why South Pole"]
  node_moon_lab["Moon Lab<br/>[MoonLabPage.tsx]"]
  node_moon_interior["Moon Interior"]
  node_atlas["Lunar Atlas<br/>[AtlasPage.tsx]"]
  node_composition["Composition Explorer"]
  node_physics["Moon Physics<br/>[physics.ts]"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens"| node_routes
node_routes -->|"routes to"| node_home
node_routes -->|"routes to"| node_mission_list
node_routes -->|"routes to"| node_mission_detail
node_routes -->|"routes to"| node_moon_map
node_routes -->|"routes to"| node_compare
node_routes -->|"routes to"| node_payloads
node_routes -->|"routes to"| node_navigator
node_routes -->|"routes to"| node_south_pole
node_routes -->|"routes to"| node_feature_page
node_routes -->|"routes to"| node_library
node_routes -->|"routes to"| node_why_pole
node_routes -->|"routes to"| node_moon_lab
node_routes -->|"routes to"| node_moon_interior
node_routes -->|"routes to"| node_atlas
node_routes -->|"routes to"| node_composition
node_mission_list -->|"browses"| node_mission_data
node_mission_detail -->|"displays records"| node_mission_data
node_moon_map -->|"maps locations"| node_mission_data
node_compare -->|"compares records"| node_mission_data
node_payloads -->|"explores payloads"| node_mission_data
node_navigator -->|"reads URL state"| node_nav_state
node_nav_state -->|"resolves sites"| node_sites
node_nav_state -->|"resolves missions"| node_mission_data
node_navigator -->|"computes windows"| node_astro
node_south_pole -->|"computes conditions"| node_astro
node_south_pole -->|"reads site records"| node_sites
node_navigator -->|"renders briefings"| node_hazards
node_south_pole -->|"renders briefings"| node_hazards
node_feature_page -->|"renders filters"| node_feature_filters
node_feature_page -->|"filters features"| node_feature_engine
node_feature_page -->|"builds density"| node_feature_density
node_feature_page -->|"renders map"| node_feature_map
node_feature_page -->|"renders globe"| node_feature_globe
node_moon_lab -->|"calculates values"| node_physics
node_feature_page -->|"overlays missions"| node_mission_data

click node_routes "https://github.com/ahammad204/nasa-moon/blob/main/src/App.tsx"
click node_mission_data "https://github.com/ahammad204/nasa-moon/blob/main/src/lib/missions.ts"
click node_mission_list "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/ListPage.tsx"
click node_mission_detail "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/MissionDetailPage.tsx"
click node_moon_map "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/MapPage.tsx"
click node_compare "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/ComparePage.tsx"
click node_payloads "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/PayloadsPage.tsx"
click node_navigator "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/NavigatorPage.tsx"
click node_nav_state "https://github.com/ahammad204/nasa-moon/blob/main/src/components/navigator/useNavigatorState.ts"
click node_astro "https://github.com/ahammad204/nasa-moon/blob/main/src/lib/astro/window.ts"
click node_sites "https://github.com/ahammad204/nasa-moon/blob/main/src/lib/sites.ts"
click node_south_pole "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/SouthPolePage.tsx"
click node_hazards "https://github.com/ahammad204/nasa-moon/blob/main/src/components/HazardBriefing.tsx"
click node_feature_page "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/FeaturesPage.tsx"
click node_feature_filters "https://github.com/ahammad204/nasa-moon/blob/main/src/components/features/FeaturesFilters.tsx"
click node_feature_engine "https://github.com/ahammad204/nasa-moon/blob/main/src/lib/features/engine.ts"
click node_feature_density "https://github.com/ahammad204/nasa-moon/blob/main/src/lib/features/density.ts"
click node_feature_globe "https://github.com/ahammad204/nasa-moon/blob/main/src/components/features/FeaturesGlobe.tsx"
click node_feature_map "https://github.com/ahammad204/nasa-moon/blob/main/src/components/features/FeaturesMap.tsx"
click node_home "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/HomePage.tsx"
click node_library "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/LibraryPage.tsx"
click node_why_pole "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/WhySouthPolePage.tsx"
click node_moon_lab "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/MoonLabPage.tsx"
click node_moon_interior "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/MoonInteriorPage.tsx"
click node_atlas "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/AtlasPage.tsx"
click node_composition "https://github.com/ahammad204/nasa-moon/blob/main/src/pages/CompositionPage.tsx"
click node_physics "https://github.com/ahammad204/nasa-moon/blob/main/src/lib/physics/physics.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_routes toneBlue
class node_mission_data,node_mission_list,node_mission_detail,node_moon_map,node_compare,node_payloads toneAmber
class node_navigator,node_nav_state,node_astro,node_sites,node_south_pole,node_hazards toneMint
class node_feature_page,node_feature_filters,node_feature_engine,node_feature_density,node_feature_globe,node_feature_map toneRose
class node_home,node_library,node_why_pole,node_moon_lab,node_moon_interior,node_atlas,node_composition,node_physics,node_visitor toneIndigo
```

## Components

### Application

- [Route Shell](https://github.com/ahammad204/nasa-moon/blob/main/src/App.tsx): `src/App.tsx`

### Mission Browser

- [Mission Records](https://github.com/ahammad204/nasa-moon/blob/main/src/lib/missions.ts): `src/lib/missions.ts`
- [Mission List](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/ListPage.tsx): `src/pages/ListPage.tsx`
- [Mission Detail](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/MissionDetailPage.tsx): `src/pages/MissionDetailPage.tsx`
- [Moon Map](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/MapPage.tsx): `src/pages/MapPage.tsx`
- [Mission Compare](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/ComparePage.tsx): `src/pages/ComparePage.tsx`
- [Payload Explorer](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/PayloadsPage.tsx): `src/pages/PayloadsPage.tsx`

### Site Conditions

- [Sun Earth Navigator](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/NavigatorPage.tsx): `src/pages/NavigatorPage.tsx`
- [Navigator URL State](https://github.com/ahammad204/nasa-moon/blob/main/src/components/navigator/useNavigatorState.ts): `src/components/navigator/useNavigatorState.ts`
- [Astronomy Engine](https://github.com/ahammad204/nasa-moon/blob/main/src/lib/astro/window.ts): `src/lib/astro/window.ts`
- [Site Records](https://github.com/ahammad204/nasa-moon/blob/main/src/lib/sites.ts): `src/lib/sites.ts`
- [South Pole Sites](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/SouthPolePage.tsx): `src/pages/SouthPolePage.tsx`
- [Hazard Briefings](https://github.com/ahammad204/nasa-moon/blob/main/src/components/HazardBriefing.tsx): `src/components/HazardBriefing.tsx`

### Lunar Features

- [Feature Explorer](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/FeaturesPage.tsx): `src/pages/FeaturesPage.tsx`
- [Feature Filters](https://github.com/ahammad204/nasa-moon/blob/main/src/components/features/FeaturesFilters.tsx): `src/components/features/FeaturesFilters.tsx`
- [Feature Engine](https://github.com/ahammad204/nasa-moon/blob/main/src/lib/features/engine.ts): `src/lib/features/engine.ts`
- [Density Grid](https://github.com/ahammad204/nasa-moon/blob/main/src/lib/features/density.ts): `src/lib/features/density.ts`
- [Feature Globe](https://github.com/ahammad204/nasa-moon/blob/main/src/components/features/FeaturesGlobe.tsx): `src/components/features/FeaturesGlobe.tsx`
- [Feature Map](https://github.com/ahammad204/nasa-moon/blob/main/src/components/features/FeaturesMap.tsx): `src/components/features/FeaturesMap.tsx`

### Science Explorer

- [Home](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/HomePage.tsx): `src/pages/HomePage.tsx`
- [Research Library](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/LibraryPage.tsx): `src/pages/LibraryPage.tsx`
- [Why South Pole](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/WhySouthPolePage.tsx): `src/pages/WhySouthPolePage.tsx`
- [Moon Lab](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/MoonLabPage.tsx): `src/pages/MoonLabPage.tsx`
- [Moon Interior](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/MoonInteriorPage.tsx): `src/pages/MoonInteriorPage.tsx`
- [Lunar Atlas](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/AtlasPage.tsx): `src/pages/AtlasPage.tsx`
- [Composition Explorer](https://github.com/ahammad204/nasa-moon/blob/main/src/pages/CompositionPage.tsx): `src/pages/CompositionPage.tsx`
- [Moon Physics](https://github.com/ahammad204/nasa-moon/blob/main/src/lib/physics/physics.ts): `src/lib/physics/physics.ts`

### Other components

- **Visitor**

## Connections

- Visitor → Route Shell: opens (evidence: `src/App.tsx`)
- Route Shell → Home: routes to (evidence: `src/App.tsx`)
- Route Shell → Mission List: routes to (evidence: `src/App.tsx`)
- Route Shell → Mission Detail: routes to (evidence: `src/App.tsx`)
- Route Shell → Moon Map: routes to (evidence: `src/App.tsx`)
- Route Shell → Mission Compare: routes to (evidence: `src/App.tsx`)
- Route Shell → Payload Explorer: routes to (evidence: `src/App.tsx`)
- Route Shell → Sun Earth Navigator: routes to (evidence: `src/App.tsx`)
- Route Shell → South Pole Sites: routes to (evidence: `src/App.tsx`)
- Route Shell → Feature Explorer: routes to (evidence: `src/App.tsx`)
- Route Shell → Research Library: routes to (evidence: `src/App.tsx`)
- Route Shell → Why South Pole: routes to (evidence: `src/App.tsx`)
- Route Shell → Moon Lab: routes to (evidence: `src/App.tsx`)
- Route Shell → Moon Interior: routes to (evidence: `src/App.tsx`)
- Route Shell → Lunar Atlas: routes to (evidence: `src/App.tsx`)
- Route Shell → Composition Explorer: routes to (evidence: `src/App.tsx`)
- Mission List → Mission Records: browses (evidence: `README.md`)
- Mission Detail → Mission Records: displays records (evidence: `README.md`)
- Moon Map → Mission Records: maps locations (evidence: `src/pages/MapPage.tsx`)
- Mission Compare → Mission Records: compares records (evidence: `README.md`)
- Payload Explorer → Mission Records: explores payloads (evidence: `README.md`)
- Sun Earth Navigator → Navigator URL State: reads URL state (evidence: `src/pages/NavigatorPage.tsx`)
- Navigator URL State → Site Records: resolves sites (evidence: `src/components/navigator/useNavigatorState.ts`)
- Navigator URL State → Mission Records: resolves missions (evidence: `src/components/navigator/useNavigatorState.ts`)
- Sun Earth Navigator → Astronomy Engine: computes windows (evidence: `src/pages/NavigatorPage.tsx`)
- South Pole Sites → Astronomy Engine: computes conditions (evidence: `src/pages/SouthPolePage.tsx`)
- South Pole Sites → Site Records: reads site records (evidence: `src/pages/SouthPolePage.tsx`)
- Sun Earth Navigator → Hazard Briefings: renders briefings (evidence: `src/pages/NavigatorPage.tsx`)
- South Pole Sites → Hazard Briefings: renders briefings (evidence: `src/pages/SouthPolePage.tsx`)
- Feature Explorer → Feature Filters: renders filters (evidence: `src/pages/FeaturesPage.tsx`)
- Feature Explorer → Feature Engine: filters features (evidence: `src/pages/FeaturesPage.tsx`)
- Feature Explorer → Density Grid: builds density (evidence: `src/pages/FeaturesPage.tsx`)
- Feature Explorer → Feature Map: renders map (evidence: `src/pages/FeaturesPage.tsx`)
- Feature Explorer → Feature Globe: renders globe (evidence: `src/pages/FeaturesPage.tsx`)
- Moon Lab → Moon Physics: calculates values (evidence: `src/pages/MoonLabPage.tsx`)
- Feature Explorer → Mission Records: overlays missions (evidence: `src/pages/FeaturesPage.tsx`)
