# muskaanpopat/pave-pilot-pro architecture

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

- Interactive diagram: https://gitdiagram.com/muskaanpopat/pave-pilot-pro
- Repository: https://github.com/muskaanpopat/pave-pilot-pro

## Overview

INFRASCAN combines authenticated hazard reporting, image-based pothole detection, spatial hazard exploration, analytics, and pothole-aware route planning. The main user journey is to sign in, submit or view detections, then request and compare safer routes; the React app presents those workflows while Flask exposes the documented API and coordinates inference and persistence. The graph preserves README capabilities, but sampled excerpts do not show every page-to-API call, so uncertain wiring is omitted.

Main entry points: [`backend/app.py`](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/backend/app.py) (Flask API), [`src/App.tsx`](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/App.tsx) (React Application), [`src/lib/osrmRoutingService.ts`](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/lib/osrmRoutingService.ts) (Route Analysis Client), [`src/contexts/AuthContext.tsx`](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/contexts/AuthContext.tsx) (Session Context)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web and Mobile"]
  node_app["React Application<br/>[App.tsx]"]
  node_authui["Sign In<br/>[Auth.tsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.tsx]"]
  node_analytics["Road Analytics<br/>[Analytics.tsx]"]
  node_detectui["Detection Upload<br/>[Detect.tsx]"]
  node_mapui["Hazard Map<br/>[PotholeMap.tsx]"]
  node_routesui["Route Planner<br/>[Routes.tsx]"]
  node_mobile["Android Host<br/>[MainActivity.java]"]
  node_authcontext["Session Context<br/>[AuthContext.tsx]"]
end

subgraph group_hazards["Hazard Detection"]
  node_mapsvc["Map Data Service"]
  node_inference["YOLO Inference<br/>[predict.py]"]
  node_weights["YOLO Weights"]
end

subgraph group_navigation["Safe Navigation"]
  node_routeclient["Route Analysis Client"]
  node_osrm["OSRM Routing"]
  node_nominatim["Nominatim Geocoder"]
  node_here["HERE Traffic"]
end

subgraph group_services["Backend Services"]
  node_api["Flask API<br/>[app.py]"]
end

subgraph group_state["Data and Identity"]
  node_dbaccess["MySQL Access<br/>[database.py]"]
  node_mysql[("MySQL Store")]
  node_globaldata["Global Hazard Data<br/>[map_dataset.py]"]
  node_supabase["Supabase Auth<br/>[client.ts]"]
end

node_driver(("Driver or Authority"))

node_driver -->|"uses"| node_app
node_app -->|"routes to"| node_authui
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_analytics
node_app -->|"routes to"| node_detectui
node_app -->|"routes to"| node_mapui
node_app -->|"routes to"| node_routesui
node_app -->|"provides session"| node_authcontext
node_mobile -->|"hosts"| node_app
node_authui -->|"uses"| node_authcontext
node_authcontext -->|"requests session"| node_api
node_authcontext -.->|"optional auth"| node_supabase
node_detectui -->|"uploads detection"| node_api
node_mapui -->|"loads hazards"| node_mapsvc
node_mapsvc -->|"fetches potholes"| node_api
node_dashboard -->|"requests metrics"| node_api
node_analytics -->|"requests analytics"| node_api
node_routesui -->|"requests suggestions"| node_api
node_routesui -->|"analyzes routes"| node_routeclient
node_routeclient -->|"requests routes"| node_osrm
node_routeclient -->|"geocodes places"| node_nominatim
node_routeclient -.->|"requests traffic"| node_here
node_api -->|"runs detection"| node_inference
node_inference -->|"loads model"| node_weights
node_api -->|"reads and writes"| node_dbaccess
node_dbaccess -->|"queries"| node_mysql
node_api -->|"reads hazards"| node_globaldata
node_api -->|"requests route data"| node_osrm
node_api -->|"geocodes places"| node_nominatim

click node_app "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/App.tsx"
click node_authui "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/Auth.tsx"
click node_dashboard "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/Dashboard.tsx"
click node_analytics "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/Analytics.tsx"
click node_detectui "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/Detect.tsx"
click node_mapui "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/PotholeMap.tsx"
click node_routesui "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/Routes.tsx"
click node_mobile "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/android/app/src/main/java/com/infrascan/app/MainActivity.java"
click node_authcontext "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/contexts/AuthContext.tsx"
click node_mapsvc "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/lib/googleMapsService.ts"
click node_routeclient "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/lib/osrmRoutingService.ts"
click node_api "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/backend/app.py"
click node_inference "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/backend/predict.py"
click node_dbaccess "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/backend/database.py"
click node_globaldata "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/backend/map_dataset.py"
click node_supabase "https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/integrations/supabase/client.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_app,node_authui,node_dashboard,node_analytics,node_detectui,node_mapui,node_routesui,node_mobile,node_authcontext toneBlue
class node_mapsvc,node_inference,node_weights toneAmber
class node_routeclient,node_osrm,node_nominatim,node_here toneMint
class node_api toneRose
class node_dbaccess,node_mysql,node_globaldata,node_supabase,node_driver toneIndigo
```

## Components

### Web and Mobile

- [React Application](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/App.tsx): `src/App.tsx`
- [Sign In](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/Auth.tsx): `src/pages/Auth.tsx`
- [Dashboard](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/Dashboard.tsx): `src/pages/Dashboard.tsx`
- [Road Analytics](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/Analytics.tsx): `src/pages/Analytics.tsx`
- [Detection Upload](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/Detect.tsx): `src/pages/Detect.tsx`
- [Hazard Map](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/PotholeMap.tsx): `src/pages/PotholeMap.tsx`
- [Route Planner](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/pages/Routes.tsx): `src/pages/Routes.tsx`
- [Android Host](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/android/app/src/main/java/com/infrascan/app/MainActivity.java): `android/app/src/main/java/com/infrascan/app/MainActivity.java`
- [Session Context](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/contexts/AuthContext.tsx): `src/contexts/AuthContext.tsx`

### Hazard Detection

- [Map Data Service](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/lib/googleMapsService.ts): `src/lib/googleMapsService.ts`
- [YOLO Inference](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/backend/predict.py): `backend/predict.py`
- **YOLO Weights**

### Safe Navigation

- [Route Analysis Client](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/lib/osrmRoutingService.ts): `src/lib/osrmRoutingService.ts`
- **OSRM Routing**
- **Nominatim Geocoder**
- **HERE Traffic**

### Backend Services

- [Flask API](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/backend/app.py): `backend/app.py`

### Data and Identity

- [MySQL Access](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/backend/database.py): `backend/database.py`
- **MySQL Store**
- [Global Hazard Data](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/backend/map_dataset.py): `backend/map_dataset.py`
- [Supabase Auth](https://github.com/muskaanpopat/pave-pilot-pro/blob/main/src/integrations/supabase/client.ts): `src/integrations/supabase/client.ts`

### Other components

- **Driver or Authority**

## Connections

- Driver or Authority → React Application: uses
- React Application → Sign In: routes to
- React Application → Dashboard: routes to
- React Application → Road Analytics: routes to
- React Application → Detection Upload: routes to
- React Application → Hazard Map: routes to
- React Application → Route Planner: routes to
- React Application → Session Context: provides session
- Android Host → React Application: hosts
- Sign In → Session Context: uses
- Session Context → Flask API: requests session
- Session Context → Supabase Auth: optional auth
- Detection Upload → Flask API: uploads detection
- Hazard Map → Map Data Service: loads hazards
- Map Data Service → Flask API: fetches potholes
- Dashboard → Flask API: requests metrics
- Road Analytics → Flask API: requests analytics
- Route Planner → Flask API: requests suggestions
- Route Planner → Route Analysis Client: analyzes routes
- Route Analysis Client → OSRM Routing: requests routes
- Route Analysis Client → Nominatim Geocoder: geocodes places
- Route Analysis Client → HERE Traffic: requests traffic
- Flask API → YOLO Inference: runs detection
- YOLO Inference → YOLO Weights: loads model
- Flask API → MySQL Access: reads and writes
- MySQL Access → MySQL Store: queries
- Flask API → Global Hazard Data: reads hazards
- Flask API → OSRM Routing: requests route data
- Flask API → Nominatim Geocoder: geocodes places
