# sanjaycoder07-del/radar- architecture

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

- Interactive diagram: https://gitdiagram.com/sanjaycoder07-del/radar-
- Repository: https://github.com/sanjaycoder07-del/radar-

## Overview

The product is an India-focused weather surveillance and short-term nowcasting dashboard. Users inspect live radar and select locations; the dashboard retrieves radar frames, resolves searched or clicked coordinates, and presents numerical forecasts alongside clearly marked pending hail/satellite integrations. The graph includes documented dashboard capabilities and sampled backend/provider flows; some frontend component wiring is inferred only where the README describes the feature, so uncertain links are omitted.

Main entry points: [`frontend/src/pages/Dashboard.jsx`](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/pages/Dashboard.jsx) (Dashboard), [`backend/src/server.js`](https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/server.js) (Express server), [`frontend/src/hooks/useRadarData.js`](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/hooks/useRadarData.js) (Radar state), [`backend/src/routes/healthRoutes.js`](https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/routes/healthRoutes.js) (Health and status)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_dashboard["Weather Dashboard"]
  node_dashboard_page["Dashboard<br/>[Dashboard.jsx]"]
  node_map["Interactive map<br/>[MapView.jsx]"]
  node_radar_layer["Radar overlay<br/>[RadarLayer.jsx]"]
  node_radar_controls["Radar controls<br/>[RadarPanel.jsx]"]
  node_search["Location search<br/>[SearchBar.jsx]"]
  node_location_panel["Location details<br/>[LocationPanel.jsx]"]
  node_alerts["Risk and satellite status<br/>[AlertPanel.jsx]"]
  node_system_status["Connectivity status<br/>[SystemStatus.jsx]"]
end

subgraph group_frontend_data["Frontend Data"]
  node_radar_hook["Radar state<br/>[useRadarData.js]"]
  node_forecast_hook["Forecast state"]
  node_api_client["Backend API client<br/>[api.js]"]
  node_forecast_service["Forecast analysis"]
end

subgraph group_backend["Backend API"]
  node_server["Express server<br/>[server.js]"]
  node_radar_route["Radar endpoint<br/>[radarRoutes.js]"]
  node_geocode_route["Geocoding endpoints<br/>[geocodeRoutes.js]"]
  node_health_route["Health and status<br/>[healthRoutes.js]"]
  node_radar_service["Radar metadata service<br/>[radarService.js]"]
  node_geo_service["Geocoding service<br/>[geoapifyService.js]"]
end

subgraph group_providers["Weather Providers"]
end

node_user(("Dashboard user"))
node_rainviewer{{"RainViewer"}}
node_geoapify{{"Geoapify"}}
node_openmeteo{{"Open-Meteo"}}
node_map_tiles{{"Basemap tiles"}}

node_user -->|"uses"| node_dashboard_page
node_dashboard_page -->|"renders"| node_map
node_dashboard_page -->|"renders"| node_radar_controls
node_dashboard_page -->|"renders"| node_search
node_dashboard_page -->|"renders"| node_location_panel
node_dashboard_page -->|"renders"| node_alerts
node_dashboard_page -->|"renders"| node_system_status
node_dashboard_page -->|"uses"| node_radar_hook
node_dashboard_page -->|"uses"| node_forecast_hook
node_radar_hook -->|"requests metadata"| node_api_client
node_forecast_hook -->|"loads forecast"| node_forecast_service
node_forecast_service -->|"fetches forecast"| node_openmeteo
node_api_client -->|"HTTP requests"| node_server
node_server -->|"dispatches"| node_radar_route
node_server -->|"dispatches"| node_geocode_route
node_server -->|"dispatches"| node_health_route
node_radar_route -->|"gets metadata"| node_radar_service
node_radar_service -->|"fetches metadata"| node_rainviewer
node_geocode_route -->|"forwards queries"| node_geo_service
node_geo_service -->|"geocodes"| node_geoapify
node_health_route -->|"checks connectivity"| node_radar_service
node_health_route -->|"checks connectivity"| node_geo_service
node_radar_hook -->|"provides tile state"| node_radar_layer
node_radar_layer -->|"loads radar tiles"| node_rainviewer
node_map -->|"loads basemap"| node_map_tiles

click node_dashboard_page "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/pages/Dashboard.jsx"
click node_map "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/MapView.jsx"
click node_radar_layer "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/RadarLayer.jsx"
click node_radar_controls "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/RadarPanel.jsx"
click node_search "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/SearchBar.jsx"
click node_location_panel "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/LocationPanel.jsx"
click node_alerts "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/AlertPanel.jsx"
click node_system_status "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/SystemStatus.jsx"
click node_radar_hook "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/hooks/useRadarData.js"
click node_forecast_hook "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/hooks/useModelForecast.js"
click node_api_client "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/services/api.js"
click node_forecast_service "https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/services/openMeteoService.js"
click node_server "https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/server.js"
click node_radar_route "https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/routes/radarRoutes.js"
click node_geocode_route "https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/routes/geocodeRoutes.js"
click node_health_route "https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/routes/healthRoutes.js"
click node_radar_service "https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/services/radarService.js"
click node_geo_service "https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/services/geoapifyService.js"

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_dashboard_page,node_map,node_radar_layer,node_radar_controls,node_search,node_location_panel,node_alerts,node_system_status,node_user,node_rainviewer toneBlue
class node_radar_hook,node_forecast_hook,node_api_client,node_forecast_service toneAmber
class node_server,node_radar_route,node_geocode_route,node_health_route,node_radar_service,node_geo_service,node_geoapify toneMint
class node_openmeteo,node_map_tiles toneIndigo
```

## Components

### Weather Dashboard

- [Dashboard](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Interactive map](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/MapView.jsx): `frontend/src/components/MapView.jsx`
- [Radar overlay](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/RadarLayer.jsx): `frontend/src/components/RadarLayer.jsx`
- [Radar controls](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/RadarPanel.jsx): `frontend/src/components/RadarPanel.jsx`
- [Location search](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/SearchBar.jsx): `frontend/src/components/SearchBar.jsx`
- [Location details](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/LocationPanel.jsx): `frontend/src/components/LocationPanel.jsx`
- [Risk and satellite status](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/AlertPanel.jsx): `frontend/src/components/AlertPanel.jsx`
- [Connectivity status](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/components/SystemStatus.jsx): `frontend/src/components/SystemStatus.jsx`

### Frontend Data

- [Radar state](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/hooks/useRadarData.js): `frontend/src/hooks/useRadarData.js`
- [Forecast state](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/hooks/useModelForecast.js): `frontend/src/hooks/useModelForecast.js`
- [Backend API client](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`
- [Forecast analysis](https://github.com/sanjaycoder07-del/radar-/blob/main/frontend/src/services/openMeteoService.js): `frontend/src/services/openMeteoService.js`

### Backend API

- [Express server](https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/server.js): `backend/src/server.js`
- [Radar endpoint](https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/routes/radarRoutes.js): `backend/src/routes/radarRoutes.js`
- [Geocoding endpoints](https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/routes/geocodeRoutes.js): `backend/src/routes/geocodeRoutes.js`
- [Health and status](https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/routes/healthRoutes.js): `backend/src/routes/healthRoutes.js`
- [Radar metadata service](https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/services/radarService.js): `backend/src/services/radarService.js`
- [Geocoding service](https://github.com/sanjaycoder07-del/radar-/blob/main/backend/src/services/geoapifyService.js): `backend/src/services/geoapifyService.js`

### Other components

- **Dashboard user**
- **RainViewer**
- **Geoapify**
- **Open-Meteo**
- **Basemap tiles**

## Connections

- Dashboard user → Dashboard: uses
- Dashboard → Interactive map: renders
- Dashboard → Radar controls: renders
- Dashboard → Location search: renders
- Dashboard → Location details: renders
- Dashboard → Risk and satellite status: renders
- Dashboard → Connectivity status: renders
- Dashboard → Radar state: uses
- Dashboard → Forecast state: uses
- Radar state → Backend API client: requests metadata
- Forecast state → Forecast analysis: loads forecast
- Forecast analysis → Open-Meteo: fetches forecast
- Backend API client → Express server: HTTP requests
- Express server → Radar endpoint: dispatches
- Express server → Geocoding endpoints: dispatches
- Express server → Health and status: dispatches
- Radar endpoint → Radar metadata service: gets metadata
- Radar metadata service → RainViewer: fetches metadata
- Geocoding endpoints → Geocoding service: forwards queries
- Geocoding service → Geoapify: geocodes
- Health and status → Radar metadata service: checks connectivity
- Health and status → Geocoding service: checks connectivity
- Radar state → Radar overlay: provides tile state
- Radar overlay → RainViewer: loads radar tiles
- Interactive map → Basemap tiles: loads basemap
