# loudjaine03/amanar architecture

> Architecture diagram of the GitHub repository loudjaine03/amanar, 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/loudjaine03/amanar
- Repository: https://github.com/loudjaine03/amanar

## Overview

Amanar is an experimental decision-support app for comparing three Algerian sites with Mars and lunar terrain and planning mission rehearsals. Users choose a destination and test constraints, inspect terrain and geology comparisons, select candidate sites and spots, then rehearse slope-limited rover traverses and review site conditions. The Python pipeline prepares comparable terrain and assessment data; the browser app consumes mission data and performs live twin ranking and route planning. Several page implementations were not sampled, so their documented capabilities are represented without asserting unverified internal calls.

Main entry points: [`src/components/mission/Plan.tsx`](https://github.com/loudjaine03/amanar/blob/main/src/components/mission/Plan.tsx) (Plan interface), [`src/lib/stage3.ts`](https://github.com/loudjaine03/amanar/blob/main/src/lib/stage3.ts) (Grid and reachability), [`pipeline/compare.py`](https://github.com/loudjaine03/amanar/blob/main/pipeline/compare.py) (Comparison data), [`src/lib/plan.ts`](https://github.com/loudjaine03/amanar/blob/main/src/lib/plan.ts) (Plan ranking)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_pipeline["Assessment pipeline"]
  node_terrain["Terrain measures<br/>[terrain.py]"]
  node_assessment["Comparison data<br/>[compare.py]"]
  node_content["Mission content<br/>[content.py]"]
end

subgraph group_app["Mission app"]
  node_shell["App shell<br/>[MissionShell.tsx]"]
  node_routes["Mission routes"]
  node_planui["Plan interface<br/>[Plan.tsx]"]
  node_compareui["Compare interface<br/>[Compare.tsx]"]
  node_store["Mission state<br/>[mission-store.ts]"]
  node_api["Mission data loader<br/>[api.ts]"]
  node_contract["Mission data contract<br/>[mission.ts]"]
end

subgraph group_analysis["Browser analysis"]
  node_planlogic["Plan ranking<br/>[plan.ts]"]
  node_twins["Terrain twin model<br/>[twins.ts]"]
  node_grid["Grid and reachability<br/>[stage3.ts]"]
  node_astar["A-star routing<br/>[astar.ts]"]
  node_geo["Coordinate utilities<br/>[geo.ts]"]
end

subgraph group_operations["Site operations"]
  node_siteui["Site assessment<br/>[SitePage.tsx]"]
  node_rehearseui["Traverse rehearsal<br/>[Rehearse.tsx]"]
  node_reportui["Results report<br/>[Report.tsx]"]
  node_sensors["Simulated sensors<br/>[sensors.ts]"]
  node_materials["Materials assessment<br/>[materials.ts]"]
end

node_user(("Mission planner"))

node_user -->|"opens workflow"| node_routes
node_routes -->|"renders app"| node_shell
node_shell -->|"loads data"| node_api
node_shell -->|"stores results"| node_store
node_api -.->|"loads typed data"| node_contract
node_assessment -->|"uses measures"| node_terrain
node_assessment -->|"combines assessments"| node_content
node_assessment -->|"produces data contract"| node_contract
node_user -->|"sets test criteria"| node_planui
node_planui -->|"reads and updates"| node_store
node_planui -->|"loads model"| node_twins
node_planui -->|"loads grid"| node_grid
node_planlogic -->|"predicts twin cells"| node_twins
node_planlogic -->|"checks reachability"| node_grid
node_planlogic -->|"converts coordinates"| node_geo
node_user -->|"reviews comparison"| node_compareui
node_user -->|"inspects site"| node_siteui
node_siteui -.->|"assesses materials"| node_materials
node_user -->|"rehearses traverse"| node_rehearseui
node_rehearseui -->|"plans constrained route"| node_grid
node_grid -->|"searches route"| node_astar
node_rehearseui -.->|"simulates readings"| node_sensors
node_user -->|"exports findings"| node_reportui

click node_terrain "https://github.com/loudjaine03/amanar/blob/main/pipeline/terrain.py"
click node_assessment "https://github.com/loudjaine03/amanar/blob/main/pipeline/compare.py"
click node_content "https://github.com/loudjaine03/amanar/blob/main/pipeline/content.py"
click node_shell "https://github.com/loudjaine03/amanar/blob/main/src/components/mission/MissionShell.tsx"
click node_routes "https://github.com/loudjaine03/amanar/tree/main/src/routes"
click node_planui "https://github.com/loudjaine03/amanar/blob/main/src/components/mission/Plan.tsx"
click node_compareui "https://github.com/loudjaine03/amanar/blob/main/src/components/mission/Compare.tsx"
click node_siteui "https://github.com/loudjaine03/amanar/blob/main/src/components/mission/SitePage.tsx"
click node_rehearseui "https://github.com/loudjaine03/amanar/blob/main/src/components/mission/Rehearse.tsx"
click node_reportui "https://github.com/loudjaine03/amanar/blob/main/src/components/mission/Report.tsx"
click node_store "https://github.com/loudjaine03/amanar/blob/main/src/lib/mission-store.ts"
click node_api "https://github.com/loudjaine03/amanar/blob/main/src/lib/api.ts"
click node_contract "https://github.com/loudjaine03/amanar/blob/main/src/types/mission.ts"
click node_planlogic "https://github.com/loudjaine03/amanar/blob/main/src/lib/plan.ts"
click node_twins "https://github.com/loudjaine03/amanar/blob/main/src/lib/twins.ts"
click node_grid "https://github.com/loudjaine03/amanar/blob/main/src/lib/stage3.ts"
click node_astar "https://github.com/loudjaine03/amanar/blob/main/src/lib/astar.ts"
click node_sensors "https://github.com/loudjaine03/amanar/blob/main/src/lib/sensors.ts"
click node_materials "https://github.com/loudjaine03/amanar/blob/main/src/lib/materials.ts"
click node_geo "https://github.com/loudjaine03/amanar/blob/main/src/lib/geo.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_terrain,node_assessment,node_content toneBlue
class node_shell,node_routes,node_planui,node_compareui,node_store,node_api,node_contract toneAmber
class node_planlogic,node_twins,node_grid,node_astar,node_geo toneMint
class node_siteui,node_rehearseui,node_reportui,node_sensors,node_materials toneRose
class node_user toneIndigo
```

## Components

### Assessment pipeline

- [Terrain measures](https://github.com/loudjaine03/amanar/blob/main/pipeline/terrain.py): `pipeline/terrain.py`
- [Comparison data](https://github.com/loudjaine03/amanar/blob/main/pipeline/compare.py): `pipeline/compare.py`
- [Mission content](https://github.com/loudjaine03/amanar/blob/main/pipeline/content.py): `pipeline/content.py`

### Mission app

- [App shell](https://github.com/loudjaine03/amanar/blob/main/src/components/mission/MissionShell.tsx): `src/components/mission/MissionShell.tsx`
- [Mission routes](https://github.com/loudjaine03/amanar/tree/main/src/routes): `src/routes`
- [Plan interface](https://github.com/loudjaine03/amanar/blob/main/src/components/mission/Plan.tsx): `src/components/mission/Plan.tsx`
- [Compare interface](https://github.com/loudjaine03/amanar/blob/main/src/components/mission/Compare.tsx): `src/components/mission/Compare.tsx`
- [Mission state](https://github.com/loudjaine03/amanar/blob/main/src/lib/mission-store.ts): `src/lib/mission-store.ts`
- [Mission data loader](https://github.com/loudjaine03/amanar/blob/main/src/lib/api.ts): `src/lib/api.ts`
- [Mission data contract](https://github.com/loudjaine03/amanar/blob/main/src/types/mission.ts): `src/types/mission.ts`

### Browser analysis

- [Plan ranking](https://github.com/loudjaine03/amanar/blob/main/src/lib/plan.ts): `src/lib/plan.ts`
- [Terrain twin model](https://github.com/loudjaine03/amanar/blob/main/src/lib/twins.ts): `src/lib/twins.ts`
- [Grid and reachability](https://github.com/loudjaine03/amanar/blob/main/src/lib/stage3.ts): `src/lib/stage3.ts`
- [A-star routing](https://github.com/loudjaine03/amanar/blob/main/src/lib/astar.ts): `src/lib/astar.ts`
- [Coordinate utilities](https://github.com/loudjaine03/amanar/blob/main/src/lib/geo.ts): `src/lib/geo.ts`

### Site operations

- [Site assessment](https://github.com/loudjaine03/amanar/blob/main/src/components/mission/SitePage.tsx): `src/components/mission/SitePage.tsx`
- [Traverse rehearsal](https://github.com/loudjaine03/amanar/blob/main/src/components/mission/Rehearse.tsx): `src/components/mission/Rehearse.tsx`
- [Results report](https://github.com/loudjaine03/amanar/blob/main/src/components/mission/Report.tsx): `src/components/mission/Report.tsx`
- [Simulated sensors](https://github.com/loudjaine03/amanar/blob/main/src/lib/sensors.ts): `src/lib/sensors.ts`
- [Materials assessment](https://github.com/loudjaine03/amanar/blob/main/src/lib/materials.ts): `src/lib/materials.ts`

### Other components

- **Mission planner**

## Connections

- Mission planner → Mission routes: opens workflow
- Mission routes → App shell: renders app (evidence: `src/routes/index.tsx`)
- App shell → Mission data loader: loads data (evidence: `src/components/mission/MissionShell.tsx`)
- App shell → Mission state: stores results (evidence: `src/components/mission/MissionShell.tsx`)
- Mission data loader → Mission data contract: loads typed data
- Comparison data → Terrain measures: uses measures (evidence: `pipeline/compare.py`)
- Comparison data → Mission content: combines assessments (evidence: `pipeline/compare.py`)
- Comparison data → Mission data contract: produces data contract (evidence: `src/types/mission.ts`)
- Mission planner → Plan interface: sets test criteria
- Plan interface → Mission state: reads and updates (evidence: `src/components/mission/Plan.tsx`)
- Plan interface → Terrain twin model: loads model (evidence: `src/components/mission/Plan.tsx`)
- Plan interface → Grid and reachability: loads grid (evidence: `src/components/mission/Plan.tsx`)
- Plan ranking → Terrain twin model: predicts twin cells (evidence: `src/lib/plan.ts`)
- Plan ranking → Grid and reachability: checks reachability (evidence: `src/lib/plan.ts`)
- Plan ranking → Coordinate utilities: converts coordinates (evidence: `src/lib/plan.ts`)
- Mission planner → Compare interface: reviews comparison
- Mission planner → Site assessment: inspects site
- Site assessment → Materials assessment: assesses materials
- Mission planner → Traverse rehearsal: rehearses traverse
- Traverse rehearsal → Grid and reachability: plans constrained route (evidence: `src/components/mission/Rehearse.tsx`)
- Grid and reachability → A-star routing: searches route (evidence: `src/lib/stage3.ts`)
- Traverse rehearsal → Simulated sensors: simulates readings
- Mission planner → Results report: exports findings
