# vigneshachari31/tour-guard architecture

> Architecture diagram of the GitHub repository vigneshachari31/tour-guard, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vigneshachari31/tour-guard
- Repository: https://github.com/vigneshachari31/tour-guard

## Overview

Tour Guard combines a Flutter travel-safety app, a FastAPI service, and a React administration dashboard. The documented tourist flow selects a route, then requests risk estimates and nearby hazards; the backend analyzes routes and records trip/risk state. Tourists can also report hazards and trigger SOS, while administrators monitor trips and manage incidents, responders, hazards, users, and risk history. Backend details and Flutter screens were not sampled, so only documented or directly indexed relationships are drawn; unsampled mobile internals are represented at the directory level.

Main entry points: [`backend/main.py`](https://github.com/vigneshachari31/tour-guard/blob/main/backend/main.py) (FastAPI service), [`admin_dashboard/src/main.tsx`](https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/main.tsx) (Admin workspace), [`backend/routers/admin.py`](https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/admin.py) (Admin operations), [`android`](https://github.com/vigneshachari31/tour-guard/tree/main/android) (Flutter app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mobile["Tourist app"]
  node_mobileapp["Flutter app"]
end

subgraph group_api["API and safety"]
  node_backend["FastAPI service<br/>[main.py]"]
  node_auth["Authentication<br/>[auth.py]"]
  node_sessions["Sessions<br/>[sessions.py]"]
  node_trips["Route and trips<br/>[trips.py]"]
  node_risk["Risk assessment<br/>[risk_engine.py]"]
  node_hazards["Hazard reports<br/>[hazards.py]"]
  node_radar["Radar<br/>[radar.py]"]
  node_sos["SOS tracking<br/>[sos_tracking.py]"]
  node_stream["Trip stream<br/>[trip_stream.py]"]
  node_adminapi["Admin operations<br/>[admin.py]"]
end

subgraph group_admin["Operations dashboard"]
  node_dashboard["Admin workspace<br/>[main.tsx]"]
  node_dashpages["Overview and incidents<br/>[Dashboard.tsx]"]
  node_hazardpage["Hazard management<br/>[Hazards.tsx]"]
  node_incidentdetail["Incident detail"]
  node_tripview["Live trip view<br/>[useTripStream.ts]"]
  node_otherpages["Operations pages<br/>[Responders.tsx]"]
end

subgraph group_state["Persistence"]
  node_db[("Database models<br/>[models.py]")]
end

node_tourist(("Tourist"))
node_adminuser(("Administrator"))
node_routerservice["Routing service"]

node_tourist -->|"uses"| node_mobileapp
node_mobileapp -.->|"requests API"| node_backend
node_backend -->|"uses tokens"| node_auth
node_backend -->|"registers routes"| node_sessions
node_backend -->|"registers routes"| node_trips
node_backend -->|"registers routes"| node_hazards
node_backend -->|"registers routes"| node_radar
node_backend -->|"registers routes"| node_sos
node_backend -->|"registers routes"| node_stream
node_backend -->|"registers routes"| node_adminapi
node_backend -->|"fetches routes"| node_routerservice
node_backend -.->|"reads and writes"| node_db
node_trips -.->|"assesses risk"| node_risk
node_adminuser -->|"uses"| node_dashboard
node_dashboard -->|"routes to"| node_dashpages
node_dashboard -->|"routes to"| node_hazardpage
node_dashboard -->|"routes to"| node_incidentdetail
node_dashboard -->|"routes to"| node_otherpages
node_tripview -.->|"opens stream"| node_backend
node_dashpages -.->|"loads data"| node_adminapi
node_hazardpage -.->|"manages hazards"| node_adminapi
node_incidentdetail -.->|"updates incidents"| node_adminapi
node_otherpages -.->|"loads operations"| node_adminapi

click node_mobileapp "https://github.com/vigneshachari31/tour-guard/tree/main/android"
click node_backend "https://github.com/vigneshachari31/tour-guard/blob/main/backend/main.py"
click node_auth "https://github.com/vigneshachari31/tour-guard/blob/main/backend/auth.py"
click node_sessions "https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/sessions.py"
click node_trips "https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/trips.py"
click node_risk "https://github.com/vigneshachari31/tour-guard/blob/main/backend/risk_engine.py"
click node_hazards "https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/hazards.py"
click node_radar "https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/radar.py"
click node_sos "https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/sos_tracking.py"
click node_stream "https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/trip_stream.py"
click node_adminapi "https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/admin.py"
click node_db "https://github.com/vigneshachari31/tour-guard/blob/main/backend/models.py"
click node_dashboard "https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/main.tsx"
click node_dashpages "https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/pages/Dashboard.tsx"
click node_hazardpage "https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/pages/Hazards.tsx"
click node_incidentdetail "https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/pages/IncidentDetails.tsx"
click node_tripview "https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/useTripStream.ts"
click node_otherpages "https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/pages/Responders.tsx"

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_mobileapp toneBlue
class node_backend,node_auth,node_sessions,node_trips,node_risk,node_hazards,node_radar,node_sos,node_stream,node_adminapi toneAmber
class node_dashboard,node_dashpages,node_hazardpage,node_incidentdetail,node_tripview,node_otherpages toneMint
class node_db toneRose
class node_tourist,node_adminuser,node_routerservice toneIndigo
```

## Components

### Tourist app

- [Flutter app](https://github.com/vigneshachari31/tour-guard/tree/main/android): `android`

### API and safety

- [FastAPI service](https://github.com/vigneshachari31/tour-guard/blob/main/backend/main.py): `backend/main.py`
- [Authentication](https://github.com/vigneshachari31/tour-guard/blob/main/backend/auth.py): `backend/auth.py`
- [Sessions](https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/sessions.py): `backend/routers/sessions.py`
- [Route and trips](https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/trips.py): `backend/routers/trips.py`
- [Risk assessment](https://github.com/vigneshachari31/tour-guard/blob/main/backend/risk_engine.py): `backend/risk_engine.py`
- [Hazard reports](https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/hazards.py): `backend/routers/hazards.py`
- [Radar](https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/radar.py): `backend/routers/radar.py`
- [SOS tracking](https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/sos_tracking.py): `backend/routers/sos_tracking.py`
- [Trip stream](https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/trip_stream.py): `backend/routers/trip_stream.py`
- [Admin operations](https://github.com/vigneshachari31/tour-guard/blob/main/backend/routers/admin.py): `backend/routers/admin.py`

### Operations dashboard

- [Admin workspace](https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/main.tsx): `admin_dashboard/src/main.tsx`
- [Overview and incidents](https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/pages/Dashboard.tsx): `admin_dashboard/src/pages/Dashboard.tsx`
- [Hazard management](https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/pages/Hazards.tsx): `admin_dashboard/src/pages/Hazards.tsx`
- [Incident detail](https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/pages/IncidentDetails.tsx): `admin_dashboard/src/pages/IncidentDetails.tsx`
- [Live trip view](https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/useTripStream.ts): `admin_dashboard/src/useTripStream.ts`
- [Operations pages](https://github.com/vigneshachari31/tour-guard/blob/main/admin_dashboard/src/pages/Responders.tsx): `admin_dashboard/src/pages/Responders.tsx`

### Persistence

- [Database models](https://github.com/vigneshachari31/tour-guard/blob/main/backend/models.py): `backend/models.py`

### Other components

- **Tourist**
- **Administrator**
- **Routing service**

## Connections

- Tourist → Flutter app: uses (evidence: `README.md`)
- Flutter app → FastAPI service: requests API (evidence: `README.md`)
- FastAPI service → Authentication: uses tokens (evidence: `backend/main.py`)
- FastAPI service → Sessions: registers routes (evidence: `backend/main.py`)
- FastAPI service → Route and trips: registers routes (evidence: `backend/main.py`)
- FastAPI service → Hazard reports: registers routes (evidence: `backend/main.py`)
- FastAPI service → Radar: registers routes (evidence: `backend/main.py`)
- FastAPI service → SOS tracking: registers routes (evidence: `backend/main.py`)
- FastAPI service → Trip stream: registers routes (evidence: `backend/main.py`)
- FastAPI service → Admin operations: registers routes (evidence: `backend/main.py`)
- FastAPI service → Routing service: fetches routes (evidence: `backend/main.py`)
- FastAPI service → Database models: reads and writes (evidence: `backend/main.py`)
- Route and trips → Risk assessment: assesses risk
- Administrator → Admin workspace: uses (evidence: `admin_dashboard/src/main.tsx`)
- Admin workspace → Overview and incidents: routes to (evidence: `admin_dashboard/src/main.tsx`)
- Admin workspace → Hazard management: routes to (evidence: `admin_dashboard/src/main.tsx`)
- Admin workspace → Incident detail: routes to (evidence: `admin_dashboard/src/main.tsx`)
- Admin workspace → Operations pages: routes to (evidence: `admin_dashboard/src/main.tsx`)
- Live trip view → FastAPI service: opens stream
- Overview and incidents → Admin operations: loads data
- Hazard management → Admin operations: manages hazards
- Incident detail → Admin operations: updates incidents
- Operations pages → Admin operations: loads operations
