# animesh2008-projects/ecovision-ai-v2 architecture

> Architecture diagram of the GitHub repository animesh2008-projects/ecovision-ai-v2, 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/animesh2008-projects/ecovision-ai-v2
- Repository: https://github.com/animesh2008-projects/ecovision-ai-v2

## Overview

EcoVision AI is a campus environmental-operations app that turns student observations into prioritized, routed work, then verifies staff remediation and either closes the issue or sends it for review. The graph preserves the documented scanning, decision, SLA, staff, admin, reporting, analytics, map, and assistant capabilities. Workflow and decision-engine wiring is supported by sampled source; several page integrations and the Firebase adapter are represented at the documented subsystem level because their source was not sampled.

Main entry points: [`EcoVision Ai/scanner.html`](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/scanner.html) (Issue Scanner), [`EcoVision Ai/js/workflow-engine.js`](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/workflow-engine.js) (Staff Workflow), [`EcoVision Ai/js/firebase-config.js`](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/firebase-config.js) (Data Adapter), [`EcoVision Ai/js/decision-engine.js`](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/decision-engine.js) (Priority Engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_intake["Report Intake"]
  node_scanner["Issue Scanner<br/>[scanner.html]"]
  node_dashboard["Student Dashboard<br/>[dashboard.html]"]
end

subgraph group_operations["Operations Workflow"]
  node_decision["Priority Engine<br/>[decision-engine.js]"]
  node_routing["Department Routing<br/>[routing-engine.js]"]
  node_sla["SLA Engine<br/>[sla-engine.js]"]
  node_workflow["Staff Workflow<br/>[workflow-engine.js]"]
  node_staff_page["Staff Dashboard<br/>[staff.html]"]
  node_notifications["Notifications<br/>[notifications.js]"]
end

subgraph group_oversight["Oversight Tools"]
  node_admin_page["Admin Center<br/>[admin.html]"]
  node_reports["Issue Reports<br/>[reports.html]"]
  node_analytics["Analytics<br/>[analytics.html]"]
  node_map["Hotspot Map<br/>[map.html]"]
end

subgraph group_platform["AI and Data"]
  node_analysis["Image Analysis<br/>[gemini.js]"]
  node_analyze_fn["Analysis Function<br/>[analyze-image.js]"]
  node_verification["Resolution Verification<br/>[verification.js]"]
  node_verify_fn["Verification Function"]
  node_assistant_fn["AI Assistant Function<br/>[ai-assistant.js]"]
  node_auth["Role Access<br/>[auth.js]"]
  node_data_adapter[("Data Adapter<br/>[firebase-config.js]")]
  node_mock_db[("Demo Data Store<br/>[mock-db.js]")]
end

node_student(("Student"))
node_staff(("Facilities Staff"))
node_admin(("Administrator"))
node_firebase[("Firebase")]
node_gemini{{"Gemini AI"}}

node_student -->|"reports via"| node_scanner
node_scanner -->|"analyzes image"| node_analysis
node_analysis -->|"requests analysis"| node_analyze_fn
node_analyze_fn -->|"classifies image"| node_gemini
node_analysis -.->|"fallback analysis"| node_gemini
node_scanner -->|"scores issue"| node_decision
node_decision -->|"reads issue queue"| node_data_adapter
node_decision -->|"gets department"| node_routing
node_scanner -->|"routes issue"| node_routing
node_scanner -->|"sets deadline"| node_sla
node_scanner -->|"creates workflow"| node_workflow
node_workflow -->|"updates and reads"| node_data_adapter
node_workflow -->|"verifies resolution"| node_verification
node_verification -->|"requests comparison"| node_verify_fn
node_verify_fn -->|"compares images"| node_gemini
node_verification -.->|"fallback comparison"| node_gemini
node_staff -->|"handles tasks"| node_staff_page
node_staff_page -->|"claims and resolves"| node_workflow
node_admin -->|"oversees operations"| node_admin_page
node_admin_page -->|"reviews and overrides"| node_data_adapter
node_admin_page -->|"reassigns or resolves"| node_workflow
node_workflow -->|"notifies outcomes"| node_notifications
node_student -->|"views activity"| node_dashboard
node_admin -->|"reviews metrics"| node_analytics
node_admin -->|"views hotspots"| node_map
node_staff -->|"views locations"| node_map
node_student -->|"views reports"| node_reports
node_staff -->|"views reports"| node_reports
node_admin -->|"views reports"| node_reports
node_data_adapter -.->|"uses demo store"| node_mock_db
node_data_adapter -.->|"uses production store"| node_firebase

click node_scanner "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/scanner.html"
click node_analysis "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/gemini.js"
click node_analyze_fn "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/netlify/functions/analyze-image.js"
click node_decision "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/decision-engine.js"
click node_routing "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/routing-engine.js"
click node_sla "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/sla-engine.js"
click node_workflow "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/workflow-engine.js"
click node_verification "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/verification.js"
click node_verify_fn "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/netlify/functions/verify-resolution.js"
click node_staff_page "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/staff.html"
click node_admin_page "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/admin.html"
click node_dashboard "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/dashboard.html"
click node_reports "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/reports.html"
click node_analytics "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/analytics.html"
click node_map "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/map.html"
click node_assistant_fn "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/netlify/functions/ai-assistant.js"
click node_notifications "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/notifications.js"
click node_auth "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/auth.js"
click node_data_adapter "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/firebase-config.js"
click node_mock_db "https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/mock-db.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_scanner,node_dashboard toneBlue
class node_decision,node_routing,node_sla,node_workflow,node_staff_page,node_notifications,node_firebase toneAmber
class node_admin_page,node_reports,node_analytics,node_map toneMint
class node_analysis,node_analyze_fn,node_verification,node_verify_fn,node_assistant_fn,node_auth,node_data_adapter,node_mock_db toneRose
class node_student,node_staff,node_admin,node_gemini toneIndigo
```

## Components

### Report Intake

- [Issue Scanner](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/scanner.html): `EcoVision Ai/scanner.html`
- [Student Dashboard](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/dashboard.html): `EcoVision Ai/dashboard.html`

### Operations Workflow

- [Priority Engine](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/decision-engine.js): `EcoVision Ai/js/decision-engine.js`
- [Department Routing](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/routing-engine.js): `EcoVision Ai/js/routing-engine.js`
- [SLA Engine](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/sla-engine.js): `EcoVision Ai/js/sla-engine.js`
- [Staff Workflow](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/workflow-engine.js): `EcoVision Ai/js/workflow-engine.js`
- [Staff Dashboard](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/staff.html): `EcoVision Ai/staff.html`
- [Notifications](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/notifications.js): `EcoVision Ai/js/notifications.js`

### Oversight Tools

- [Admin Center](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/admin.html): `EcoVision Ai/admin.html`
- [Issue Reports](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/reports.html): `EcoVision Ai/reports.html`
- [Analytics](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/analytics.html): `EcoVision Ai/analytics.html`
- [Hotspot Map](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/map.html): `EcoVision Ai/map.html`

### AI and Data

- [Image Analysis](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/gemini.js): `EcoVision Ai/js/gemini.js`
- [Analysis Function](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/netlify/functions/analyze-image.js): `EcoVision Ai/netlify/functions/analyze-image.js`
- [Resolution Verification](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/verification.js): `EcoVision Ai/js/verification.js`
- [Verification Function](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/netlify/functions/verify-resolution.js): `EcoVision Ai/netlify/functions/verify-resolution.js`
- [AI Assistant Function](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/netlify/functions/ai-assistant.js): `EcoVision Ai/netlify/functions/ai-assistant.js`
- [Role Access](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/auth.js): `EcoVision Ai/js/auth.js`
- [Data Adapter](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/firebase-config.js): `EcoVision Ai/js/firebase-config.js`
- [Demo Data Store](https://github.com/animesh2008-projects/ecovision-ai-v2/blob/main/EcoVision%20Ai/js/mock-db.js): `EcoVision Ai/js/mock-db.js`

### Other components

- **Student**
- **Facilities Staff**
- **Administrator**
- **Firebase**
- **Gemini AI**

## Connections

- Student → Issue Scanner: reports via
- Issue Scanner → Image Analysis: analyzes image
- Image Analysis → Analysis Function: requests analysis
- Analysis Function → Gemini AI: classifies image
- Image Analysis → Gemini AI: fallback analysis
- Issue Scanner → Priority Engine: scores issue
- Priority Engine → Data Adapter: reads issue queue
- Priority Engine → Department Routing: gets department
- Issue Scanner → Department Routing: routes issue
- Issue Scanner → SLA Engine: sets deadline
- Issue Scanner → Staff Workflow: creates workflow
- Staff Workflow → Data Adapter: updates and reads
- Staff Workflow → Resolution Verification: verifies resolution
- Resolution Verification → Verification Function: requests comparison
- Verification Function → Gemini AI: compares images
- Resolution Verification → Gemini AI: fallback comparison
- Facilities Staff → Staff Dashboard: handles tasks
- Staff Dashboard → Staff Workflow: claims and resolves
- Administrator → Admin Center: oversees operations
- Admin Center → Data Adapter: reviews and overrides
- Admin Center → Staff Workflow: reassigns or resolves
- Staff Workflow → Notifications: notifies outcomes
- Student → Student Dashboard: views activity
- Administrator → Analytics: reviews metrics
- Administrator → Hotspot Map: views hotspots
- Facilities Staff → Hotspot Map: views locations
- Student → Issue Reports: views reports
- Facilities Staff → Issue Reports: views reports
- Administrator → Issue Reports: views reports
- Data Adapter → Demo Data Store: uses demo store
- Data Adapter → Firebase: uses production store
