# evil-prog/tyit-project architecture

> Architecture diagram of the GitHub repository evil-prog/tyit-project, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/evil-prog/tyit-project
- Repository: https://github.com/evil-prog/tyit-project

## Overview

This is an environmental quality portal for air and water records, with administrative management, user accounts, complaints and awareness content, feedback, and weather. Users and administrators interact through JSP pages and servlet handlers; handlers query or update relational data, then forward results to views. The sampled code confirms water search/filter/edit, user search/filter, user complaint listing, feedback submission, and weather retrieval. Other capabilities are represented from the file tree; their wiring is not inferred where source was not sampled.

Main entry points: [`water-quality.jsp`](https://github.com/evil-prog/tyit-project/blob/main/water-quality.jsp) (Water quality view), [`WaterFilterServlet.java`](https://github.com/evil-prog/tyit-project/blob/main/WaterFilterServlet.java) (Water records), [`WaterSearchServlet.java`](https://github.com/evil-prog/tyit-project/blob/main/WaterSearchServlet.java) (Water search), [`WaterStatusFilterServlet.java`](https://github.com/evil-prog/tyit-project/blob/main/WaterStatusFilterServlet.java) (Water status)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_quality["Quality Records"]
  node_water["Water records"]
  node_watersearch["Water search"]
  node_waterstatus["Water status"]
  node_editwater["Edit water"]
  node_waterpage["Water quality view<br/>[water-quality.jsp]"]
  node_airadmin["Air record admin"]
  node_airpage["Air quality view<br/>[air-quality.jsp]"]
  node_airmanage["Air management<br/>[manage-air.jsp]"]
end

subgraph group_admin["Administration"]
  node_useradmin["User administration"]
  node_usersearch["User search"]
  node_userstatus["User status"]
  node_rolefilter["Role filter"]
  node_userspage["User management<br/>[manage-users.jsp]"]
  node_login["Login<br/>[LoginServlet.java]"]
  node_register["Registration"]
end

subgraph group_community["Community Features"]
  node_complaintsubmit["Submit complaint"]
  node_complaintlist["My complaints"]
  node_complaintpage["Complaints view<br/>[complaints.jsp]"]
  node_complaintadmin["Complaint administration"]
  node_awareness["Awareness management"]
  node_feedback["Feedback submission"]
  node_feedbackpage["Feedback view<br/>[feedback.jsp]"]
end

subgraph group_integrations["External Data"]
  node_weather["Weather lookup"]
  node_weatherapi["Open-Meteo"]
  node_weatherpage["Weather view<br/>[weather.jsp]"]
end

node_visitor(("Portal user"))
node_administrator(("Administrator"))
node_database[("Application database")]

node_visitor -->|"requests"| node_watersearch
node_watersearch -->|"queries water"| node_database
node_watersearch -->|"forwards results"| node_waterpage
node_visitor -->|"requests filters"| node_water
node_water -->|"queries water"| node_database
node_water -->|"forwards results"| node_waterpage
node_visitor -->|"requests status"| node_waterstatus
node_waterstatus -->|"queries water"| node_database
node_waterstatus -->|"forwards results"| node_waterpage
node_administrator -->|"requests edit"| node_editwater
node_editwater -->|"reads and updates"| node_database
node_editwater -->|"redirects after update"| node_waterpage
node_administrator -->|"requests search"| node_usersearch
node_usersearch -->|"queries users"| node_database
node_usersearch -->|"forwards results"| node_userspage
node_administrator -->|"requests filter"| node_userstatus
node_userstatus -->|"queries users"| node_database
node_userstatus -->|"forwards results"| node_userspage
node_administrator -->|"requests filter"| node_rolefilter
node_rolefilter -->|"queries users"| node_database
node_rolefilter -->|"forwards results"| node_userspage
node_visitor -->|"requests list"| node_complaintlist
node_complaintlist -->|"queries complaints"| node_database
node_complaintlist -->|"forwards results"| node_complaintpage
node_visitor -->|"submits feedback"| node_feedback
node_feedback -->|"writes feedback"| node_database
node_visitor -->|"requests weather"| node_weather
node_weather -->|"fetches forecast"| node_weatherapi
node_weather -->|"forwards weather"| node_weatherpage

click node_water "https://github.com/evil-prog/tyit-project/blob/main/WaterFilterServlet.java"
click node_watersearch "https://github.com/evil-prog/tyit-project/blob/main/WaterSearchServlet.java"
click node_waterstatus "https://github.com/evil-prog/tyit-project/blob/main/WaterStatusFilterServlet.java"
click node_editwater "https://github.com/evil-prog/tyit-project/blob/main/EditWaterServlet.java"
click node_waterpage "https://github.com/evil-prog/tyit-project/blob/main/water-quality.jsp"
click node_airadmin "https://github.com/evil-prog/tyit-project/blob/main/AdminAirServlet.java"
click node_airpage "https://github.com/evil-prog/tyit-project/blob/main/air-quality.jsp"
click node_airmanage "https://github.com/evil-prog/tyit-project/blob/main/manage-air.jsp"
click node_useradmin "https://github.com/evil-prog/tyit-project/blob/main/AdminUserServlet.java"
click node_usersearch "https://github.com/evil-prog/tyit-project/blob/main/SearchUserServlet.java"
click node_userstatus "https://github.com/evil-prog/tyit-project/blob/main/StatusFilterServlet.java"
click node_rolefilter "https://github.com/evil-prog/tyit-project/blob/main/RoleFilterServlet.java"
click node_userspage "https://github.com/evil-prog/tyit-project/blob/main/manage-users.jsp"
click node_login "https://github.com/evil-prog/tyit-project/blob/main/LoginServlet.java"
click node_register "https://github.com/evil-prog/tyit-project/blob/main/RegisterServlet.java"
click node_complaintsubmit "https://github.com/evil-prog/tyit-project/blob/main/ComplaintServlet.java"
click node_complaintlist "https://github.com/evil-prog/tyit-project/blob/main/UserComplaintServlet.java"
click node_complaintpage "https://github.com/evil-prog/tyit-project/blob/main/complaints.jsp"
click node_complaintadmin "https://github.com/evil-prog/tyit-project/blob/main/AdminComplaintServlet.java"
click node_awareness "https://github.com/evil-prog/tyit-project/blob/main/ManageAwarenessServlet.java"
click node_feedback "https://github.com/evil-prog/tyit-project/blob/main/FeedbackServlet.java"
click node_feedbackpage "https://github.com/evil-prog/tyit-project/blob/main/feedback.jsp"
click node_weather "https://github.com/evil-prog/tyit-project/blob/main/WeatherServlet.java"
click node_weatherpage "https://github.com/evil-prog/tyit-project/blob/main/weather.jsp"

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_water,node_watersearch,node_waterstatus,node_editwater,node_waterpage,node_airadmin,node_airpage,node_airmanage,node_visitor toneBlue
class node_useradmin,node_usersearch,node_userstatus,node_rolefilter,node_userspage,node_login,node_register,node_database toneAmber
class node_complaintsubmit,node_complaintlist,node_complaintpage,node_complaintadmin,node_awareness,node_feedback,node_feedbackpage toneMint
class node_weather,node_weatherapi,node_weatherpage toneRose
class node_administrator toneIndigo
```

## Components

### Quality Records

- [Water records](https://github.com/evil-prog/tyit-project/blob/main/WaterFilterServlet.java): `WaterFilterServlet.java`
- [Water search](https://github.com/evil-prog/tyit-project/blob/main/WaterSearchServlet.java): `WaterSearchServlet.java`
- [Water status](https://github.com/evil-prog/tyit-project/blob/main/WaterStatusFilterServlet.java): `WaterStatusFilterServlet.java`
- [Edit water](https://github.com/evil-prog/tyit-project/blob/main/EditWaterServlet.java): `EditWaterServlet.java`
- [Water quality view](https://github.com/evil-prog/tyit-project/blob/main/water-quality.jsp): `water-quality.jsp`
- [Air record admin](https://github.com/evil-prog/tyit-project/blob/main/AdminAirServlet.java): `AdminAirServlet.java`
- [Air quality view](https://github.com/evil-prog/tyit-project/blob/main/air-quality.jsp): `air-quality.jsp`
- [Air management](https://github.com/evil-prog/tyit-project/blob/main/manage-air.jsp): `manage-air.jsp`

### Administration

- [User administration](https://github.com/evil-prog/tyit-project/blob/main/AdminUserServlet.java): `AdminUserServlet.java`
- [User search](https://github.com/evil-prog/tyit-project/blob/main/SearchUserServlet.java): `SearchUserServlet.java`
- [User status](https://github.com/evil-prog/tyit-project/blob/main/StatusFilterServlet.java): `StatusFilterServlet.java`
- [Role filter](https://github.com/evil-prog/tyit-project/blob/main/RoleFilterServlet.java): `RoleFilterServlet.java`
- [User management](https://github.com/evil-prog/tyit-project/blob/main/manage-users.jsp): `manage-users.jsp`
- [Login](https://github.com/evil-prog/tyit-project/blob/main/LoginServlet.java): `LoginServlet.java`
- [Registration](https://github.com/evil-prog/tyit-project/blob/main/RegisterServlet.java): `RegisterServlet.java`

### Community Features

- [Submit complaint](https://github.com/evil-prog/tyit-project/blob/main/ComplaintServlet.java): `ComplaintServlet.java`
- [My complaints](https://github.com/evil-prog/tyit-project/blob/main/UserComplaintServlet.java): `UserComplaintServlet.java`
- [Complaints view](https://github.com/evil-prog/tyit-project/blob/main/complaints.jsp): `complaints.jsp`
- [Complaint administration](https://github.com/evil-prog/tyit-project/blob/main/AdminComplaintServlet.java): `AdminComplaintServlet.java`
- [Awareness management](https://github.com/evil-prog/tyit-project/blob/main/ManageAwarenessServlet.java): `ManageAwarenessServlet.java`
- [Feedback submission](https://github.com/evil-prog/tyit-project/blob/main/FeedbackServlet.java): `FeedbackServlet.java`
- [Feedback view](https://github.com/evil-prog/tyit-project/blob/main/feedback.jsp): `feedback.jsp`

### External Data

- [Weather lookup](https://github.com/evil-prog/tyit-project/blob/main/WeatherServlet.java): `WeatherServlet.java`
- **Open-Meteo**
- [Weather view](https://github.com/evil-prog/tyit-project/blob/main/weather.jsp): `weather.jsp`

### Other components

- **Portal user**
- **Administrator**
- **Application database**

## Connections

- Portal user → Water search: requests
- Water search → Application database: queries water
- Water search → Water quality view: forwards results
- Portal user → Water records: requests filters
- Water records → Application database: queries water
- Water records → Water quality view: forwards results
- Portal user → Water status: requests status
- Water status → Application database: queries water
- Water status → Water quality view: forwards results
- Administrator → Edit water: requests edit
- Edit water → Application database: reads and updates
- Edit water → Water quality view: redirects after update
- Administrator → User search: requests search
- User search → Application database: queries users
- User search → User management: forwards results
- Administrator → User status: requests filter
- User status → Application database: queries users
- User status → User management: forwards results
- Administrator → Role filter: requests filter
- Role filter → Application database: queries users
- Role filter → User management: forwards results
- Portal user → My complaints: requests list
- My complaints → Application database: queries complaints
- My complaints → Complaints view: forwards results
- Portal user → Feedback submission: submits feedback
- Feedback submission → Application database: writes feedback
- Portal user → Weather lookup: requests weather
- Weather lookup → Open-Meteo: fetches forecast
- Weather lookup → Weather view: forwards weather
