# ayushchauhan2006/ekadrishti-3d architecture

> Architecture diagram of the GitHub repository ayushchauhan2006/ekadrishti-3d, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ayushchauhan2006/ekadrishti-3d
- Repository: https://github.com/ayushchauhan2006/ekadrishti-3d

## Overview

EkaDrishti 3D turns a drone video and matching telemetry into a metric, georeferenced 3D scene, QA evidence, and browser-based inspection tools. The principal workflow runs from mission upload through frame selection, dynamic-object masking, sparse reconstruction, telemetry alignment, dense modeling, artifact export, and dashboard viewing; independent checkpoint validation qualifies absolute-accuracy claims. The graph reflects the documented pipeline and sampled orchestrator code. Several detailed stage implementations were not sampled, so their internal wiring is omitted.

Main entry points: [`src/ekadrishti/full_pipeline.py`](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/full_pipeline.py) (Metric pipeline), [`src/ekadrishti/reconstruct.py`](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/reconstruct.py) (Sparse reconstruction), [`dashboard/server.py`](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/dashboard/server.py) (Local API + jobs), [`src/ekadrishti/visual_full_pipeline.py`](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/visual_full_pipeline.py) (Visual-only pipeline)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mission["Mission intake"]
  node_mission_files["Video + SRT"]
  node_pipeline["Metric pipeline<br/>[full_pipeline.py]"]
  node_visual_pipeline["Visual-only pipeline"]
  node_inspection["Mission inspection<br/>[inspect_mission.py]"]
end

subgraph group_reconstruction["Reconstruction"]
  node_frame_selection["Frame selection<br/>[extract_frames.py]"]
  node_dynamic_masking["Dynamic masking<br/>[dynamic_masking.py]"]
  node_ai_weights["YOLOv4-tiny model"]
  node_sparse_reconstruction["Sparse reconstruction<br/>[reconstruct.py]"]
  node_telemetry_alignment["Telemetry alignment"]
  node_dense_model["Dense model + texture"]
end

subgraph group_outputs["Geospatial outputs"]
  node_presentation["Geospatial exports<br/>[presentation.py]"]
  node_accuracy["Accuracy validation"]
  node_viewer_cloud["Viewer cloud prep"]
  node_published_assets["Published model + reports"]
end

subgraph group_experience["Inspection experience"]
  node_dashboard_ui["Dashboard UI<br/>[main.jsx]"]
  node_dashboard_api["Local API + jobs<br/>[server.py]"]
  node_viewer["Metric 3D viewer<br/>[textured_viewer.js]"]
  node_model_catalog["Model catalog<br/>[server.py]"]
end

node_operator(("Mission operator"))
node_colmap["COLMAP engine"]

node_operator -->|"selects mission"| node_dashboard_ui
node_dashboard_ui -->|"uploads files"| node_dashboard_api
node_mission_files -->|"provides input"| node_dashboard_api
node_dashboard_api -->|"starts job"| node_pipeline
node_dashboard_api -.->|"starts visual job"| node_visual_pipeline
node_pipeline -->|"inspects mission"| node_inspection
node_pipeline -->|"runs reconstruction"| node_sparse_reconstruction
node_sparse_reconstruction -->|"requests inspection"| node_inspection
node_sparse_reconstruction -->|"selects frames"| node_frame_selection
node_sparse_reconstruction -->|"masks frames"| node_dynamic_masking
node_dynamic_masking -->|"loads weights"| node_ai_weights
node_sparse_reconstruction -->|"extracts and matches"| node_colmap
node_sparse_reconstruction -->|"aligns model"| node_telemetry_alignment
node_pipeline -->|"builds dense model"| node_dense_model
node_visual_pipeline -->|"runs visual reconstruction"| node_sparse_reconstruction
node_visual_pipeline -->|"builds dense model"| node_dense_model
node_pipeline -->|"exports artifacts"| node_presentation
node_pipeline -->|"validates checkpoints"| node_accuracy
node_pipeline -->|"copies reports"| node_published_assets
node_visual_pipeline -->|"prepares cloud"| node_viewer_cloud
node_viewer_cloud -->|"writes viewer cloud"| node_published_assets
node_visual_pipeline -->|"copies mesh assets"| node_published_assets
node_dashboard_api -->|"publishes model"| node_published_assets
node_dashboard_api -->|"records model"| node_model_catalog
node_dashboard_ui -->|"opens inspection"| node_viewer
node_viewer -->|"loads model assets"| node_published_assets
node_dashboard_ui -->|"reads catalog"| node_dashboard_api

click node_dashboard_ui "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/dashboard/frontend/src/main.jsx"
click node_dashboard_api "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/dashboard/server.py"
click node_pipeline "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/full_pipeline.py"
click node_visual_pipeline "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/visual_full_pipeline.py"
click node_inspection "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/inspect_mission.py"
click node_frame_selection "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/extract_frames.py"
click node_dynamic_masking "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/dynamic_masking.py"
click node_ai_weights "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/assets/ai/yolov4-tiny.weights"
click node_sparse_reconstruction "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/reconstruct.py"
click node_telemetry_alignment "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/metric_alignment.py"
click node_dense_model "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/build_dense_cuda.py"
click node_presentation "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/presentation.py"
click node_accuracy "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/accuracy_validation.py"
click node_viewer_cloud "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/prepare_viewer_cloud.py"
click node_published_assets "https://github.com/ayushchauhan2006/ekadrishti-3d/tree/main/dashboard/dist/assets"
click node_viewer "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/dashboard/dist/textured_viewer.js"
click node_model_catalog "https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/dashboard/server.py"

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_mission_files,node_pipeline,node_visual_pipeline,node_inspection toneBlue
class node_frame_selection,node_dynamic_masking,node_ai_weights,node_sparse_reconstruction,node_telemetry_alignment,node_dense_model toneAmber
class node_presentation,node_accuracy,node_viewer_cloud,node_published_assets toneMint
class node_dashboard_ui,node_dashboard_api,node_viewer,node_model_catalog toneRose
class node_operator,node_colmap toneIndigo
```

## Components

### Mission intake

- **Video + SRT**
- [Metric pipeline](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/full_pipeline.py): `src/ekadrishti/full_pipeline.py`
- [Visual-only pipeline](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/visual_full_pipeline.py): `src/ekadrishti/visual_full_pipeline.py`
- [Mission inspection](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/inspect_mission.py): `src/ekadrishti/inspect_mission.py`

### Reconstruction

- [Frame selection](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/extract_frames.py): `src/ekadrishti/extract_frames.py`
- [Dynamic masking](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/dynamic_masking.py): `src/ekadrishti/dynamic_masking.py`
- [YOLOv4-tiny model](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/assets/ai/yolov4-tiny.weights): `assets/ai/yolov4-tiny.weights`
- [Sparse reconstruction](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/reconstruct.py): `src/ekadrishti/reconstruct.py`
- [Telemetry alignment](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/metric_alignment.py): `src/ekadrishti/metric_alignment.py`
- [Dense model + texture](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/build_dense_cuda.py): `src/ekadrishti/build_dense_cuda.py`

### Geospatial outputs

- [Geospatial exports](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/presentation.py): `src/ekadrishti/presentation.py`
- [Accuracy validation](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/accuracy_validation.py): `src/ekadrishti/accuracy_validation.py`
- [Viewer cloud prep](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/src/ekadrishti/prepare_viewer_cloud.py): `src/ekadrishti/prepare_viewer_cloud.py`
- [Published model + reports](https://github.com/ayushchauhan2006/ekadrishti-3d/tree/main/dashboard/dist/assets): `dashboard/dist/assets`

### Inspection experience

- [Dashboard UI](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/dashboard/frontend/src/main.jsx): `dashboard/frontend/src/main.jsx`
- [Local API + jobs](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/dashboard/server.py): `dashboard/server.py`
- [Metric 3D viewer](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/dashboard/dist/textured_viewer.js): `dashboard/dist/textured_viewer.js`
- [Model catalog](https://github.com/ayushchauhan2006/ekadrishti-3d/blob/main/dashboard/server.py): `dashboard/server.py`

### Other components

- **Mission operator**
- **COLMAP engine**

## Connections

- Mission operator → Dashboard UI: selects mission
- Dashboard UI → Local API + jobs: uploads files
- Video + SRT → Local API + jobs: provides input
- Local API + jobs → Metric pipeline: starts job
- Local API + jobs → Visual-only pipeline: starts visual job
- Metric pipeline → Mission inspection: inspects mission
- Metric pipeline → Sparse reconstruction: runs reconstruction
- Sparse reconstruction → Mission inspection: requests inspection
- Sparse reconstruction → Frame selection: selects frames
- Sparse reconstruction → Dynamic masking: masks frames
- Dynamic masking → YOLOv4-tiny model: loads weights
- Sparse reconstruction → COLMAP engine: extracts and matches
- Sparse reconstruction → Telemetry alignment: aligns model
- Metric pipeline → Dense model + texture: builds dense model
- Visual-only pipeline → Sparse reconstruction: runs visual reconstruction
- Visual-only pipeline → Dense model + texture: builds dense model
- Metric pipeline → Geospatial exports: exports artifacts
- Metric pipeline → Accuracy validation: validates checkpoints
- Metric pipeline → Published model + reports: copies reports
- Visual-only pipeline → Viewer cloud prep: prepares cloud
- Viewer cloud prep → Published model + reports: writes viewer cloud
- Visual-only pipeline → Published model + reports: copies mesh assets
- Local API + jobs → Published model + reports: publishes model
- Local API + jobs → Model catalog: records model
- Dashboard UI → Metric 3D viewer: opens inspection
- Metric 3D viewer → Published model + reports: loads model assets
- Dashboard UI → Local API + jobs: reads catalog
