# rahmatul-islam/nagar-drishti_test architecture

> Architecture diagram of the GitHub repository rahmatul-islam/nagar-drishti_test, 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/rahmatul-islam/nagar-drishti_test
- Repository: https://github.com/rahmatul-islam/nagar-drishti_test

## Overview

Nagar-Drishti is a Flutter civic-issue reporting and resolution-tracking app. The intended citizen flow is phone authentication, photo-based issue classification and location capture, report submission, then status tracking and citizen verification; authority screens support operational follow-up, while heatmaps and notifications extend the feedback loop. The tree shows Appwrite-oriented services and an AI service, but sampled source is mostly platform boilerplate, so feature wiring and backend behavior are not verified. The README’s separate web-admin, offline-sync, duplicate-clustering, and analytics capabilities are not clearly represented as implementations in this tree.

Main entry points: [`lib/features/report/screens/create_report_screen.dart`](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/report/screens/create_report_screen.dart) (Create report), [`lib/app/routes.dart`](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/app/routes.dart) (App routes), [`lib/features/home/screens/home_screen.dart`](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/home/screens/home_screen.dart) (Home screen), [`lib/features/report/services/report_service.dart`](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/report/services/report_service.dart) (Report service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_citizen["Citizen app"]
  node_app["Flutter app<br/>[main.dart]"]
  node_routes["App routes<br/>[routes.dart]"]
  node_auth["Phone authentication"]
  node_home["Home screen<br/>[home_screen.dart]"]
  node_my_reports["My reports"]
  node_details["Report details"]
  node_verification["Citizen verification"]
  node_heatmap["Area heatmap"]
end

subgraph group_report["Report handling"]
  node_create["Create report"]
  node_ai["Issue classification<br/>[ai_service.dart]"]
  node_report_service["Report service"]
end

subgraph group_authority["Authority operations"]
  node_authority["Authority dashboards"]
  node_workflow["Work assignment"]
end

subgraph group_services["App services"]
  node_location["GPS location"]
  node_appwrite_report["Appwrite reports"]
  node_notifications["Notification service"]
  node_appwrite_notifications["Appwrite notifications"]
end

node_citizen_user(("Citizen"))
node_appwrite[("Appwrite")]
node_notification_user(("App user"))

node_citizen_user -->|"opens"| node_app
node_app -->|"routes"| node_routes
node_routes -->|"presents"| node_auth
node_routes -->|"presents"| node_home
node_home -->|"starts report"| node_create
node_create -->|"classifies image"| node_ai
node_create -->|"captures location"| node_location
node_create -->|"submits report"| node_report_service
node_report_service -->|"delegates"| node_appwrite_report
node_appwrite_report -->|"reads/writes"| node_appwrite
node_my_reports -->|"loads reports"| node_report_service
node_my_reports -->|"opens report"| node_details
node_details -->|"verifies resolution"| node_verification
node_authority -->|"manages work"| node_workflow
node_home -->|"opens"| node_heatmap
node_notifications -->|"uses"| node_appwrite_notifications
node_appwrite_notifications -->|"reads/writes"| node_appwrite
node_notification_user -->|"receives updates"| node_notifications

click node_app "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/main.dart"
click node_routes "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/app/routes.dart"
click node_auth "https://github.com/rahmatul-islam/nagar-drishti_test/tree/main/lib/features/auth/screens"
click node_home "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/home/screens/home_screen.dart"
click node_create "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/report/screens/create_report_screen.dart"
click node_ai "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/report/services/ai_service.dart"
click node_location "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/core/services/location_service.dart"
click node_report_service "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/report/services/report_service.dart"
click node_appwrite_report "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/data/remote/appwrite_report_service.dart"
click node_my_reports "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/my_reports/screens/my_reports_screen.dart"
click node_details "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/my_reports/screens/report_details_screen.dart"
click node_verification "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/my_reports/screens/report_details_screen.dart"
click node_authority "https://github.com/rahmatul-islam/nagar-drishti_test/tree/main/lib/features/authority/screens"
click node_workflow "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/authority/widgets/report_workflow_details_modal.dart"
click node_heatmap "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/home/screens/heatmap_screen.dart"
click node_notifications "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/notification/services/notification_service.dart"
click node_appwrite_notifications "https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/data/remote/appwrite_notification_service.dart"

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_routes,node_auth,node_home,node_my_reports,node_details,node_verification,node_heatmap,node_notification_user toneBlue
class node_create,node_ai,node_report_service,node_appwrite toneAmber
class node_authority,node_workflow toneMint
class node_location,node_appwrite_report,node_notifications,node_appwrite_notifications toneRose
class node_citizen_user toneIndigo
```

## Components

### Citizen app

- [Flutter app](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/main.dart): `lib/main.dart`
- [App routes](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/app/routes.dart): `lib/app/routes.dart`
- [Phone authentication](https://github.com/rahmatul-islam/nagar-drishti_test/tree/main/lib/features/auth/screens): `lib/features/auth/screens`
- [Home screen](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/home/screens/home_screen.dart): `lib/features/home/screens/home_screen.dart`
- [My reports](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/my_reports/screens/my_reports_screen.dart): `lib/features/my_reports/screens/my_reports_screen.dart`
- [Report details](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/my_reports/screens/report_details_screen.dart): `lib/features/my_reports/screens/report_details_screen.dart`
- [Citizen verification](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/my_reports/screens/report_details_screen.dart): `lib/features/my_reports/screens/report_details_screen.dart`
- [Area heatmap](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/home/screens/heatmap_screen.dart): `lib/features/home/screens/heatmap_screen.dart`

### Report handling

- [Create report](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/report/screens/create_report_screen.dart): `lib/features/report/screens/create_report_screen.dart`
- [Issue classification](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/report/services/ai_service.dart): `lib/features/report/services/ai_service.dart`
- [Report service](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/report/services/report_service.dart): `lib/features/report/services/report_service.dart`

### Authority operations

- [Authority dashboards](https://github.com/rahmatul-islam/nagar-drishti_test/tree/main/lib/features/authority/screens): `lib/features/authority/screens`
- [Work assignment](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/authority/widgets/report_workflow_details_modal.dart): `lib/features/authority/widgets/report_workflow_details_modal.dart`

### App services

- [GPS location](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/core/services/location_service.dart): `lib/core/services/location_service.dart`
- [Appwrite reports](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/data/remote/appwrite_report_service.dart): `lib/data/remote/appwrite_report_service.dart`
- [Notification service](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/features/notification/services/notification_service.dart): `lib/features/notification/services/notification_service.dart`
- [Appwrite notifications](https://github.com/rahmatul-islam/nagar-drishti_test/blob/main/lib/data/remote/appwrite_notification_service.dart): `lib/data/remote/appwrite_notification_service.dart`

### Other components

- **Citizen**
- **Appwrite**
- **App user**

## Connections

- Citizen → Flutter app: opens
- Flutter app → App routes: routes
- App routes → Phone authentication: presents
- App routes → Home screen: presents
- Home screen → Create report: starts report
- Create report → Issue classification: classifies image
- Create report → GPS location: captures location
- Create report → Report service: submits report
- Report service → Appwrite reports: delegates
- Appwrite reports → Appwrite: reads/writes
- My reports → Report service: loads reports
- My reports → Report details: opens report
- Report details → Citizen verification: verifies resolution
- Authority dashboards → Work assignment: manages work
- Home screen → Area heatmap: opens
- Notification service → Appwrite notifications: uses
- Appwrite notifications → Appwrite: reads/writes
- App user → Notification service: receives updates
