# srujanabhavani10/civic-ai architecture

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

- Interactive diagram: https://gitdiagram.com/srujanabhavani10/civic-ai
- Repository: https://github.com/srujanabhavani10/civic-ai

## Overview

Civic Connect AI is a civic grievance reporting and management frontend. Citizens submit text or image reports; analysis validates and classifies them, routing assigns a department, and complaint state supports tracking and department/admin handling. Authentication gates role-specific dashboards, while a chatbot provides assistance. The API and complaint store shown here use mock and local in-memory data. Edges rely on excerpts, SOURCE INDEX references, or README claims; some feature implementations were not sampled, so uncertain links are omitted.

Main entry points: [`src/App.tsx`](https://github.com/srujanabhavani10/civic-ai/blob/main/src/App.tsx) (Routes and Shell), [`src/lib/complaintStore.ts`](https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/complaintStore.ts) (Complaint Store), [`src/lib/api.ts`](https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/api.ts) (Mock API Layer), [`src/contexts/AuthContext.tsx`](https://github.com/srujanabhavani10/civic-ai/blob/main/src/contexts/AuthContext.tsx) (Authentication Context)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App Entry"]
  node_app["Routes and Shell<br/>[App.tsx]"]
  node_home["Landing Page<br/>[Index.tsx]"]
end

subgraph group_reporting["Complaint Reporting"]
  node_report["Report Form"]
  node_analysis["Complaint Analysis<br/>[aiAnalysis.ts]"]
  node_ocr["Image OCR Validation<br/>[ocrValidation.ts]"]
  node_text_validation["Text Validation<br/>[textValidation.ts]"]
  node_routing["Department Routing"]
end

subgraph group_state["Complaint State"]
  node_tracking["Complaint Tracking<br/>[TrackComplaint.tsx]"]
  node_store[("Complaint Store<br/>[complaintStore.ts]")]
  node_api["Mock API Layer<br/>[api.ts]"]
  node_mock_data["Complaint Data Models<br/>[mockData.ts]"]
end

subgraph group_operations["Operations"]
  node_citizen_dash["Citizen Dashboard"]
  node_department_dash["Department Dashboard"]
  node_admin_dash["Admin Dashboard<br/>[AdminDashboard.tsx]"]
  node_departments_page["Departments Page<br/>[Departments.tsx]"]
end

subgraph group_identity["Identity and Help"]
  node_auth[("Authentication Context<br/>[AuthContext.tsx]")]
  node_login["Login<br/>[Login.tsx]"]
  node_register["Registration<br/>[Register.tsx]"]
  node_chatbot["Chatbot Interface"]
  node_chat_intelligence["Chatbot Intelligence"]
end

node_citizens(("Citizens"))
node_departments_external(("Departments"))

node_citizens -->|"open app"| node_app
node_departments_external -->|"open app"| node_app
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_report
node_app -->|"routes to"| node_tracking
node_app -->|"routes to"| node_citizen_dash
node_app -->|"routes to"| node_department_dash
node_app -->|"routes to"| node_admin_dash
node_app -->|"routes to"| node_departments_page
node_app -->|"routes to"| node_login
node_app -->|"routes to"| node_register
node_app -->|"provides auth"| node_auth
node_app -->|"renders"| node_chatbot
node_citizens -->|"file complaint"| node_report
node_report -->|"analyzes report"| node_analysis
node_analysis -->|"validates image"| node_ocr
node_analysis -->|"validates text"| node_text_validation
node_analysis -->|"selects department"| node_routing
node_report -->|"submits complaint"| node_store
node_report -->|"checks user"| node_auth
node_store -->|"persists records"| node_api
node_store -->|"normalizes department"| node_routing
node_api -->|"uses complaint models"| node_mock_data
node_api -->|"normalizes department"| node_routing
node_tracking -->|"reads complaints"| node_store
node_citizen_dash -->|"reads complaints"| node_store
node_citizen_dash -->|"reads user"| node_auth
node_department_dash -->|"fetches department complaints"| node_api
node_department_dash -->|"updates complaint state"| node_store
node_department_dash -->|"reads user"| node_auth
node_admin_dash -->|"manages complaints"| node_store
node_admin_dash -->|"reads dashboard data"| node_mock_data
node_login -->|"sets session"| node_auth
node_login -->|"authenticates"| node_api
node_register -->|"sets session"| node_auth
node_register -->|"registers user"| node_api
node_citizens -->|"asks for help"| node_chatbot
node_chatbot -->|"requests guidance"| node_chat_intelligence
node_chatbot -->|"reads complaint state"| node_store
node_chat_intelligence -->|"uses analysis logic"| node_analysis
node_chat_intelligence -->|"uses department routing"| node_routing

click node_app "https://github.com/srujanabhavani10/civic-ai/blob/main/src/App.tsx"
click node_home "https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/Index.tsx"
click node_report "https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/ReportComplaint.tsx"
click node_analysis "https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/aiAnalysis.ts"
click node_ocr "https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/ocrValidation.ts"
click node_text_validation "https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/textValidation.ts"
click node_routing "https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/departmentRouting.ts"
click node_tracking "https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/TrackComplaint.tsx"
click node_store "https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/complaintStore.ts"
click node_api "https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/api.ts"
click node_mock_data "https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/mockData.ts"
click node_citizen_dash "https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/CitizenDashboard.tsx"
click node_department_dash "https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/DepartmentDashboard.tsx"
click node_admin_dash "https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/AdminDashboard.tsx"
click node_departments_page "https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/Departments.tsx"
click node_auth "https://github.com/srujanabhavani10/civic-ai/blob/main/src/contexts/AuthContext.tsx"
click node_login "https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/Login.tsx"
click node_register "https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/Register.tsx"
click node_chatbot "https://github.com/srujanabhavani10/civic-ai/blob/main/src/components/FloatingChatbot.tsx"
click node_chat_intelligence "https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/chatbotIntelligence.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_home toneBlue
class node_report,node_analysis,node_ocr,node_text_validation,node_routing toneAmber
class node_tracking,node_store,node_api,node_mock_data toneMint
class node_citizen_dash,node_department_dash,node_admin_dash,node_departments_page toneRose
class node_auth,node_login,node_register,node_chatbot,node_chat_intelligence,node_citizens,node_departments_external toneIndigo
```

## Components

### App Entry

- [Routes and Shell](https://github.com/srujanabhavani10/civic-ai/blob/main/src/App.tsx): `src/App.tsx`
- [Landing Page](https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/Index.tsx): `src/pages/Index.tsx`

### Complaint Reporting

- [Report Form](https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/ReportComplaint.tsx): `src/pages/ReportComplaint.tsx`
- [Complaint Analysis](https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/aiAnalysis.ts): `src/lib/aiAnalysis.ts`
- [Image OCR Validation](https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/ocrValidation.ts): `src/lib/ocrValidation.ts`
- [Text Validation](https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/textValidation.ts): `src/lib/textValidation.ts`
- [Department Routing](https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/departmentRouting.ts): `src/lib/departmentRouting.ts`

### Complaint State

- [Complaint Tracking](https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/TrackComplaint.tsx): `src/pages/TrackComplaint.tsx`
- [Complaint Store](https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/complaintStore.ts): `src/lib/complaintStore.ts`
- [Mock API Layer](https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/api.ts): `src/lib/api.ts`
- [Complaint Data Models](https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/mockData.ts): `src/lib/mockData.ts`

### Operations

- [Citizen Dashboard](https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/CitizenDashboard.tsx): `src/pages/CitizenDashboard.tsx`
- [Department Dashboard](https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/DepartmentDashboard.tsx): `src/pages/DepartmentDashboard.tsx`
- [Admin Dashboard](https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/AdminDashboard.tsx): `src/pages/AdminDashboard.tsx`
- [Departments Page](https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/Departments.tsx): `src/pages/Departments.tsx`

### Identity and Help

- [Authentication Context](https://github.com/srujanabhavani10/civic-ai/blob/main/src/contexts/AuthContext.tsx): `src/contexts/AuthContext.tsx`
- [Login](https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/Login.tsx): `src/pages/Login.tsx`
- [Registration](https://github.com/srujanabhavani10/civic-ai/blob/main/src/pages/Register.tsx): `src/pages/Register.tsx`
- [Chatbot Interface](https://github.com/srujanabhavani10/civic-ai/blob/main/src/components/FloatingChatbot.tsx): `src/components/FloatingChatbot.tsx`
- [Chatbot Intelligence](https://github.com/srujanabhavani10/civic-ai/blob/main/src/lib/chatbotIntelligence.ts): `src/lib/chatbotIntelligence.ts`

### Other components

- **Citizens**
- **Departments**

## Connections

- Citizens → Routes and Shell: open app
- Departments → Routes and Shell: open app
- Routes and Shell → Landing Page: routes to (evidence: `src/App.tsx`)
- Routes and Shell → Report Form: routes to (evidence: `src/App.tsx`)
- Routes and Shell → Complaint Tracking: routes to (evidence: `src/App.tsx`)
- Routes and Shell → Citizen Dashboard: routes to (evidence: `src/App.tsx`)
- Routes and Shell → Department Dashboard: routes to (evidence: `src/App.tsx`)
- Routes and Shell → Admin Dashboard: routes to (evidence: `src/App.tsx`)
- Routes and Shell → Departments Page: routes to (evidence: `src/App.tsx`)
- Routes and Shell → Login: routes to (evidence: `src/App.tsx`)
- Routes and Shell → Registration: routes to (evidence: `src/App.tsx`)
- Routes and Shell → Authentication Context: provides auth (evidence: `src/App.tsx`)
- Routes and Shell → Chatbot Interface: renders (evidence: `src/App.tsx`)
- Citizens → Report Form: file complaint
- Report Form → Complaint Analysis: analyzes report (evidence: `src/pages/ReportComplaint.tsx`)
- Complaint Analysis → Image OCR Validation: validates image (evidence: `src/lib/aiAnalysis.ts`)
- Complaint Analysis → Text Validation: validates text (evidence: `src/lib/aiAnalysis.ts`)
- Complaint Analysis → Department Routing: selects department (evidence: `src/lib/aiAnalysis.ts`)
- Report Form → Complaint Store: submits complaint (evidence: `src/pages/ReportComplaint.tsx`)
- Report Form → Authentication Context: checks user (evidence: `src/pages/ReportComplaint.tsx`)
- Complaint Store → Mock API Layer: persists records (evidence: `src/lib/complaintStore.ts`)
- Complaint Store → Department Routing: normalizes department (evidence: `src/lib/complaintStore.ts`)
- Mock API Layer → Complaint Data Models: uses complaint models (evidence: `src/lib/api.ts`)
- Mock API Layer → Department Routing: normalizes department (evidence: `src/lib/api.ts`)
- Complaint Tracking → Complaint Store: reads complaints (evidence: `src/pages/TrackComplaint.tsx`)
- Citizen Dashboard → Complaint Store: reads complaints (evidence: `src/pages/CitizenDashboard.tsx`)
- Citizen Dashboard → Authentication Context: reads user (evidence: `src/pages/CitizenDashboard.tsx`)
- Department Dashboard → Mock API Layer: fetches department complaints (evidence: `src/pages/DepartmentDashboard.tsx`)
- Department Dashboard → Complaint Store: updates complaint state (evidence: `src/pages/DepartmentDashboard.tsx`)
- Department Dashboard → Authentication Context: reads user (evidence: `src/pages/DepartmentDashboard.tsx`)
- Admin Dashboard → Complaint Store: manages complaints (evidence: `src/pages/AdminDashboard.tsx`)
- Admin Dashboard → Complaint Data Models: reads dashboard data (evidence: `src/pages/AdminDashboard.tsx`)
- Login → Authentication Context: sets session (evidence: `src/pages/Login.tsx`)
- Login → Mock API Layer: authenticates (evidence: `src/pages/Login.tsx`)
- Registration → Authentication Context: sets session (evidence: `src/pages/Register.tsx`)
- Registration → Mock API Layer: registers user (evidence: `src/pages/Register.tsx`)
- Citizens → Chatbot Interface: asks for help
- Chatbot Interface → Chatbot Intelligence: requests guidance (evidence: `src/components/FloatingChatbot.tsx`)
- Chatbot Interface → Complaint Store: reads complaint state (evidence: `src/components/FloatingChatbot.tsx`)
- Chatbot Intelligence → Complaint Analysis: uses analysis logic (evidence: `src/lib/chatbotIntelligence.ts`)
- Chatbot Intelligence → Department Routing: uses department routing (evidence: `src/lib/chatbotIntelligence.ts`)
