# rachana-ht2007/satquery-ai architecture

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

- Interactive diagram: https://gitdiagram.com/rachana-ht2007/satquery-ai
- Repository: https://github.com/rachana-ht2007/satquery-ai

## Overview

SatQuery AI lets users upload satellite imagery or submit a query, choose or preview an analysis type, and inspect results and execution summaries. The main backend workflow routes queries to VQA, bi-temporal change detection, or optical-SAR fusion tools; a separate upload stage validates files and extracts metadata. Query history uses Supabase, with frontend history access and backend persistence paths indicated where supported. The excerpts show the router and fusion tool; other specialist tools are represented from the documented routing and repository tree.

Main entry points: [`src/App.tsx`](https://github.com/rachana-ht2007/satquery-ai/blob/main/src/App.tsx) (App workflow), [`backend/main.py`](https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/main.py) (FastAPI endpoints), [`backend/agent/router.py`](https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/agent/router.py) (Query router), [`src/lib/api.ts`](https://github.com/rachana-ht2007/satquery-ai/blob/main/src/lib/api.ts) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Query interface"]
  node_app["App workflow<br/>[App.tsx]"]
  node_composer["Query composer<br/>[QueryComposer.tsx]"]
  node_upload_ui["Image upload UI<br/>[ImageUpload.tsx]"]
  node_results["Results display<br/>[ResultPanel.tsx]"]
  node_execution_summary["Execution summary"]
  node_history_ui["History sidebar<br/>[HistorySidebar.tsx]"]
end

subgraph group_api["API access"]
  node_api_client["API client<br/>[api.ts]"]
  node_supabase_client["Supabase client<br/>[supabase.ts]"]
end

subgraph group_backend["Analysis service"]
  node_backend_api["FastAPI endpoints<br/>[main.py]"]
  node_image_handler["Image validation<br/>[image_handler.py]"]
  node_router["Query router<br/>[router.py]"]
  node_schemas["Request and result schemas<br/>[schemas.py]"]
end

subgraph group_tools["Specialist analysis"]
  node_vqa["Single-image VQA<br/>[vqa_tool.py]"]
  node_change_detection["Change detection"]
  node_fusion["Optical-SAR fusion"]
end

subgraph group_state["Query history"]
  node_database[("Supabase tables")]
end

node_user(("User"))
node_supabase["Supabase service"]

node_user -->|"uses"| node_app
node_app -->|"renders"| node_composer
node_app -->|"renders"| node_upload_ui
node_app -->|"renders"| node_results
node_app -->|"renders"| node_execution_summary
node_app -->|"renders"| node_history_ui
node_composer -->|"submits input"| node_app
node_upload_ui -->|"returns upload"| node_app
node_app -->|"requests analysis"| node_api_client
node_api_client -->|"calls endpoints"| node_backend_api
node_api_client -->|"reads history"| node_supabase_client
node_supabase_client -->|"queries tables"| node_supabase
node_backend_api -->|"validates data"| node_schemas
node_backend_api -->|"processes upload"| node_image_handler
node_backend_api -->|"routes and executes"| node_router
node_router -->|"dispatches"| node_vqa
node_router -->|"dispatches"| node_change_detection
node_router -->|"dispatches"| node_fusion
node_backend_api -->|"reads and writes"| node_database
node_backend_api -->|"persists queries"| node_supabase
node_history_ui -->|"selects history"| node_app

click node_app "https://github.com/rachana-ht2007/satquery-ai/blob/main/src/App.tsx"
click node_composer "https://github.com/rachana-ht2007/satquery-ai/blob/main/src/components/QueryComposer.tsx"
click node_upload_ui "https://github.com/rachana-ht2007/satquery-ai/blob/main/src/components/ImageUpload.tsx"
click node_results "https://github.com/rachana-ht2007/satquery-ai/blob/main/src/components/ResultPanel.tsx"
click node_execution_summary "https://github.com/rachana-ht2007/satquery-ai/blob/main/src/components/ExecutionSummaryPanel.tsx"
click node_history_ui "https://github.com/rachana-ht2007/satquery-ai/blob/main/src/components/HistorySidebar.tsx"
click node_api_client "https://github.com/rachana-ht2007/satquery-ai/blob/main/src/lib/api.ts"
click node_supabase_client "https://github.com/rachana-ht2007/satquery-ai/blob/main/src/lib/supabase.ts"
click node_backend_api "https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/main.py"
click node_image_handler "https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/tools/image_handler.py"
click node_router "https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/agent/router.py"
click node_schemas "https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/models/schemas.py"
click node_vqa "https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/tools/vqa_tool.py"
click node_change_detection "https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/tools/change_detection_tool.py"
click node_fusion "https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/tools/optical_sar_fusion_tool.py"
click node_database "https://github.com/rachana-ht2007/satquery-ai/blob/main/supabase/migrations/20260905154416_create_satquery_tables.sql"

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_app,node_composer,node_upload_ui,node_results,node_execution_summary,node_history_ui,node_user toneBlue
class node_api_client,node_supabase_client toneAmber
class node_backend_api,node_image_handler,node_router,node_schemas toneMint
class node_vqa,node_change_detection,node_fusion toneRose
class node_database,node_supabase toneIndigo
```

## Components

### Query interface

- [App workflow](https://github.com/rachana-ht2007/satquery-ai/blob/main/src/App.tsx): `src/App.tsx`
- [Query composer](https://github.com/rachana-ht2007/satquery-ai/blob/main/src/components/QueryComposer.tsx): `src/components/QueryComposer.tsx`
- [Image upload UI](https://github.com/rachana-ht2007/satquery-ai/blob/main/src/components/ImageUpload.tsx): `src/components/ImageUpload.tsx`
- [Results display](https://github.com/rachana-ht2007/satquery-ai/blob/main/src/components/ResultPanel.tsx): `src/components/ResultPanel.tsx`
- [Execution summary](https://github.com/rachana-ht2007/satquery-ai/blob/main/src/components/ExecutionSummaryPanel.tsx): `src/components/ExecutionSummaryPanel.tsx`
- [History sidebar](https://github.com/rachana-ht2007/satquery-ai/blob/main/src/components/HistorySidebar.tsx): `src/components/HistorySidebar.tsx`

### API access

- [API client](https://github.com/rachana-ht2007/satquery-ai/blob/main/src/lib/api.ts): `src/lib/api.ts`
- [Supabase client](https://github.com/rachana-ht2007/satquery-ai/blob/main/src/lib/supabase.ts): `src/lib/supabase.ts`

### Analysis service

- [FastAPI endpoints](https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/main.py): `backend/main.py`
- [Image validation](https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/tools/image_handler.py): `backend/tools/image_handler.py`
- [Query router](https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/agent/router.py): `backend/agent/router.py`
- [Request and result schemas](https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/models/schemas.py): `backend/models/schemas.py`

### Specialist analysis

- [Single-image VQA](https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/tools/vqa_tool.py): `backend/tools/vqa_tool.py`
- [Change detection](https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/tools/change_detection_tool.py): `backend/tools/change_detection_tool.py`
- [Optical-SAR fusion](https://github.com/rachana-ht2007/satquery-ai/blob/main/backend/tools/optical_sar_fusion_tool.py): `backend/tools/optical_sar_fusion_tool.py`

### Query history

- [Supabase tables](https://github.com/rachana-ht2007/satquery-ai/blob/main/supabase/migrations/20260905154416_create_satquery_tables.sql): `supabase/migrations/20260905154416_create_satquery_tables.sql`

### Other components

- **User**
- **Supabase service**

## Connections

- User → App workflow: uses
- App workflow → Query composer: renders
- App workflow → Image upload UI: renders
- App workflow → Results display: renders
- App workflow → Execution summary: renders
- App workflow → History sidebar: renders
- Query composer → App workflow: submits input
- Image upload UI → App workflow: returns upload
- App workflow → API client: requests analysis
- API client → FastAPI endpoints: calls endpoints
- API client → Supabase client: reads history
- Supabase client → Supabase service: queries tables
- FastAPI endpoints → Request and result schemas: validates data
- FastAPI endpoints → Image validation: processes upload
- FastAPI endpoints → Query router: routes and executes
- Query router → Single-image VQA: dispatches
- Query router → Change detection: dispatches
- Query router → Optical-SAR fusion: dispatches
- FastAPI endpoints → Supabase tables: reads and writes
- FastAPI endpoints → Supabase service: persists queries
- History sidebar → App workflow: selects history
