# adityadiya91-spec/parkwatch architecture

> Architecture diagram of the GitHub repository adityadiya91-spec/parkwatch, 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/adityadiya91-spec/parkwatch
- Repository: https://github.com/adityadiya91-spec/parkwatch

## Overview

ParkWatch is a citizen-facing park-violation reporting app with separate admin tools. The main citizen journey is account/login, submit a report with location and evidence, then track it; admin screens support review and status updates. The sampled frontend uses a MockDB for report views and submissions, while the backend exposes report endpoints backed by SQLite. The excerpts do not establish that MockDB connects to those endpoints, so that connection is not shown. Other page capabilities are represented by their routes and filenames; their internal wiring was not sampled.

Main entry points: [`src/App.jsx`](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/App.jsx) (Router and layout), [`src/MockDB.js`](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/MockDB.js) (Mock report data), [`src/AppContext.jsx`](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/AppContext.jsx) (Session context), [`src/pages`](https://github.com/adityadiya91-spec/parkwatch/tree/main/src/pages) (Login and signup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application shell"]
  node_app["Router and layout<br/>[App.jsx]"]
  node_context["Session context<br/>[AppContext.jsx]"]
  node_mockdb["Mock report data<br/>[MockDB.js]"]
end

subgraph group_citizen["Citizen workflow"]
  node_auth_pages["Login and signup"]
  node_home["Citizen home<br/>[Home.jsx]"]
  node_reporting["Report submission<br/>[Reporting.jsx]"]
  node_tracking["Report tracking<br/>[Track.jsx]"]
  node_leaderboard["Civic leaderboard<br/>[Leaderboard.jsx]"]
  node_profile["User profile<br/>[Profile.jsx]"]
end

subgraph group_admin["Admin tools"]
  node_dashboard["Admin dashboard<br/>[Dashboard.jsx]"]
  node_admin_report["Report review"]
  node_map["Incident map<br/>[Map.jsx]"]
  node_data_portal["Data portal<br/>[DataPortal.jsx]"]
end

subgraph group_backend["Backend and storage"]
  node_api["Express API<br/>[server.js]"]
  node_database[("SQLite database<br/>[database.js]")]
  node_report_store[("ParkWatch records<br/>[parkwatch.db]")]
end

node_citizen_actor(("Citizen"))
node_admin_actor(("Administrator"))

node_citizen_actor -->|"opens"| node_app
node_admin_actor -->|"opens"| node_app
node_app -->|"provides session"| node_context
node_app -->|"routes"| node_auth_pages
node_app -->|"routes"| node_home
node_app -->|"routes"| node_reporting
node_app -->|"routes"| node_tracking
node_app -->|"routes"| node_leaderboard
node_app -->|"routes"| node_profile
node_app -->|"routes"| node_dashboard
node_app -->|"routes"| node_admin_report
node_app -->|"routes"| node_map
node_app -->|"routes"| node_data_portal
node_context -->|"auth requests"| node_api
node_auth_pages -->|"uses session"| node_context
node_reporting -->|"adds report"| node_mockdb
node_home -->|"loads reports"| node_mockdb
node_tracking -->|"searches reports"| node_mockdb
node_leaderboard -->|"loads reports"| node_mockdb
node_api -->|"queries and writes"| node_database
node_database -->|"persists records"| node_report_store

click node_app "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/App.jsx"
click node_context "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/AppContext.jsx"
click node_auth_pages "https://github.com/adityadiya91-spec/parkwatch/tree/main/src/pages"
click node_home "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Home.jsx"
click node_reporting "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Reporting.jsx"
click node_tracking "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Track.jsx"
click node_leaderboard "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Leaderboard.jsx"
click node_mockdb "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/MockDB.js"
click node_profile "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Profile.jsx"
click node_dashboard "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Dashboard.jsx"
click node_admin_report "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/AdminReportView.jsx"
click node_map "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Map.jsx"
click node_data_portal "https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/DataPortal.jsx"
click node_api "https://github.com/adityadiya91-spec/parkwatch/blob/main/server/server.js"
click node_database "https://github.com/adityadiya91-spec/parkwatch/blob/main/server/database.js"
click node_report_store "https://github.com/adityadiya91-spec/parkwatch/blob/main/server/parkwatch.db"

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_context,node_mockdb toneBlue
class node_auth_pages,node_home,node_reporting,node_tracking,node_leaderboard,node_profile toneAmber
class node_dashboard,node_admin_report,node_map,node_data_portal toneMint
class node_api,node_database,node_report_store toneRose
class node_citizen_actor,node_admin_actor toneIndigo
```

## Components

### Application shell

- [Router and layout](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/App.jsx): `src/App.jsx`
- [Session context](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/AppContext.jsx): `src/AppContext.jsx`
- [Mock report data](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/MockDB.js): `src/MockDB.js`

### Citizen workflow

- [Login and signup](https://github.com/adityadiya91-spec/parkwatch/tree/main/src/pages): `src/pages`
- [Citizen home](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Home.jsx): `src/pages/Home.jsx`
- [Report submission](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Reporting.jsx): `src/pages/Reporting.jsx`
- [Report tracking](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Track.jsx): `src/pages/Track.jsx`
- [Civic leaderboard](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Leaderboard.jsx): `src/pages/Leaderboard.jsx`
- [User profile](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Profile.jsx): `src/pages/Profile.jsx`

### Admin tools

- [Admin dashboard](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Dashboard.jsx): `src/pages/Dashboard.jsx`
- [Report review](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/AdminReportView.jsx): `src/pages/AdminReportView.jsx`
- [Incident map](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/Map.jsx): `src/pages/Map.jsx`
- [Data portal](https://github.com/adityadiya91-spec/parkwatch/blob/main/src/pages/DataPortal.jsx): `src/pages/DataPortal.jsx`

### Backend and storage

- [Express API](https://github.com/adityadiya91-spec/parkwatch/blob/main/server/server.js): `server/server.js`
- [SQLite database](https://github.com/adityadiya91-spec/parkwatch/blob/main/server/database.js): `server/database.js`
- [ParkWatch records](https://github.com/adityadiya91-spec/parkwatch/blob/main/server/parkwatch.db): `server/parkwatch.db`

### Other components

- **Citizen**
- **Administrator**

## Connections

- Citizen → Router and layout: opens
- Administrator → Router and layout: opens
- Router and layout → Session context: provides session
- Router and layout → Login and signup: routes
- Router and layout → Citizen home: routes
- Router and layout → Report submission: routes
- Router and layout → Report tracking: routes
- Router and layout → Civic leaderboard: routes
- Router and layout → User profile: routes
- Router and layout → Admin dashboard: routes
- Router and layout → Report review: routes
- Router and layout → Incident map: routes
- Router and layout → Data portal: routes
- Session context → Express API: auth requests
- Login and signup → Session context: uses session
- Report submission → Mock report data: adds report
- Citizen home → Mock report data: loads reports
- Report tracking → Mock report data: searches reports
- Civic leaderboard → Mock report data: loads reports
- Express API → SQLite database: queries and writes
- SQLite database → ParkWatch records: persists records
