# nikhiljain25106/blooddonormanagementsystem architecture

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

- Interactive diagram: https://gitdiagram.com/nikhiljain25106/blooddonormanagementsystem
- Repository: https://github.com/nikhiljain25106/blooddonormanagementsystem

## Overview

LifeDrop is a blood-donor directory and admin management web application. Donors submit validated registrations; visitors search by blood group and city; administrators authenticate to view, edit, and delete donor records. The README also documents home-page guidance, compatibility and eligibility information, and a contact page. The graph follows the documented MVC flow and sampled registration, search, DAO, and authentication-filter behavior; admin servlet wiring and other unsampled feature details are represented only where the README and tree support them.

Main entry points: [`src/main/java/com/blooddonor/dao/DonorDAO.java`](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/dao/DonorDAO.java) (Donor data access), [`src/main/java/com/blooddonor/servlet/AdminLoginServlet.java`](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/AdminLoginServlet.java) (Admin authentication), [`src/main/java/com/blooddonor/filter/AdminAuthFilter.java`](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/filter/AdminAuthFilter.java) (Admin access filter), [`src/main/java/com/blooddonor/servlet/RegisterDonorServlet.java`](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/RegisterDonorServlet.java) (Registration handler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public experience"]
  node_home["Home and guidance<br/>[index.jsp]"]
  node_registration_view["Registration form<br/>[register.jsp]"]
  node_search_view["Search page<br/>[search.jsp]"]
  node_contact["Contact page<br/>[contact.jsp]"]
end

subgraph group_admin["Admin management"]
  node_login_view["Admin login<br/>[admin-login.jsp]"]
  node_login["Admin authentication"]
  node_auth_filter["Admin access filter"]
  node_dashboard["Donor dashboard"]
  node_dashboard_view["Dashboard view"]
  node_edit["Donor editing"]
  node_edit_view["Edit form<br/>[edit-donor.jsp]"]
  node_delete["Donor deletion"]
  node_logout["Admin logout"]
end

subgraph group_application["Application layers"]
  node_registration["Registration handler"]
  node_search["Donor search"]
  node_donor_dao["Donor data access<br/>[DonorDAO.java]"]
  node_admin_dao["Admin data access<br/>[AdminDAO.java]"]
  node_password["Password utilities<br/>[PasswordUtil.java]"]
  node_donor_model["Donor model<br/>[Donor.java]"]
  node_admin_model["Admin model<br/>[Admin.java]"]
  node_connection["JDBC connection<br/>[DBConnection.java]"]
end

subgraph group_data["Persistence"]
  node_schema["Database schema<br/>[schema.sql]"]
end

node_visitor(("Visitor"))
node_donor(("Donor"))
node_admin_user(("Administrator"))
node_mysql[("MySQL database")]

node_visitor -->|"browses"| node_home
node_visitor -->|"submits"| node_registration
node_donor -->|"submits"| node_registration
node_registration -->|"forwards"| node_registration_view
node_registration -->|"checks and inserts"| node_donor_dao
node_donor_dao -->|"maps records"| node_donor_model
node_visitor -->|"searches"| node_search
node_search -->|"queries"| node_donor_dao
node_search -->|"forwards results"| node_search_view
node_visitor -->|"views"| node_contact
node_admin_user -->|"authenticates"| node_login
node_login -->|"uses"| node_login_view
node_login -->|"looks up account"| node_admin_dao
node_admin_dao -->|"maps account"| node_admin_model
node_login -->|"verifies hash"| node_password
node_admin_user -->|"requests protected pages"| node_auth_filter
node_auth_filter -->|"allows session"| node_dashboard
node_auth_filter -->|"allows session"| node_edit
node_auth_filter -->|"allows session"| node_delete
node_dashboard -->|"loads donors"| node_donor_dao
node_dashboard -->|"forwards records"| node_dashboard_view
node_edit -->|"reads and updates"| node_donor_dao
node_edit -->|"forwards donor"| node_edit_view
node_delete -->|"deletes donor"| node_donor_dao
node_admin_user -->|"logs out"| node_logout
node_donor_dao -->|"opens connection"| node_connection
node_admin_dao -->|"opens connection"| node_connection
node_connection -->|"connects"| node_mysql
node_schema -->|"defines tables"| node_mysql

click node_home "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/index.jsp"
click node_registration_view "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/register.jsp"
click node_registration "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/RegisterDonorServlet.java"
click node_search_view "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/search.jsp"
click node_search "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/SearchDonorServlet.java"
click node_contact "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/contact.jsp"
click node_login_view "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/admin-login.jsp"
click node_login "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/AdminLoginServlet.java"
click node_auth_filter "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/filter/AdminAuthFilter.java"
click node_dashboard "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/AdminDashboardServlet.java"
click node_dashboard_view "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/admin-dashboard.jsp"
click node_edit "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/UpdateDonorServlet.java"
click node_edit_view "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/edit-donor.jsp"
click node_delete "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/DeleteDonorServlet.java"
click node_logout "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/AdminLogoutServlet.java"
click node_donor_dao "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/dao/DonorDAO.java"
click node_admin_dao "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/dao/AdminDAO.java"
click node_password "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/util/PasswordUtil.java"
click node_donor_model "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/model/Donor.java"
click node_admin_model "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/model/Admin.java"
click node_connection "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/util/DBConnection.java"
click node_schema "https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/database/schema.sql"

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_home,node_registration_view,node_search_view,node_contact toneBlue
class node_login_view,node_login,node_auth_filter,node_dashboard,node_dashboard_view,node_edit,node_edit_view,node_delete,node_logout,node_mysql toneAmber
class node_registration,node_search,node_donor_dao,node_admin_dao,node_password,node_donor_model,node_admin_model,node_connection toneMint
class node_schema toneRose
class node_visitor,node_donor,node_admin_user toneIndigo
```

## Components

### Public experience

- [Home and guidance](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/index.jsp): `src/main/webapp/index.jsp`
- [Registration form](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/register.jsp): `src/main/webapp/register.jsp`
- [Search page](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/search.jsp): `src/main/webapp/search.jsp`
- [Contact page](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/contact.jsp): `src/main/webapp/contact.jsp`

### Admin management

- [Admin login](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/admin-login.jsp): `src/main/webapp/admin-login.jsp`
- [Admin authentication](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/AdminLoginServlet.java): `src/main/java/com/blooddonor/servlet/AdminLoginServlet.java`
- [Admin access filter](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/filter/AdminAuthFilter.java): `src/main/java/com/blooddonor/filter/AdminAuthFilter.java`
- [Donor dashboard](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/AdminDashboardServlet.java): `src/main/java/com/blooddonor/servlet/AdminDashboardServlet.java`
- [Dashboard view](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/admin-dashboard.jsp): `src/main/webapp/admin-dashboard.jsp`
- [Donor editing](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/UpdateDonorServlet.java): `src/main/java/com/blooddonor/servlet/UpdateDonorServlet.java`
- [Edit form](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/webapp/edit-donor.jsp): `src/main/webapp/edit-donor.jsp`
- [Donor deletion](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/DeleteDonorServlet.java): `src/main/java/com/blooddonor/servlet/DeleteDonorServlet.java`
- [Admin logout](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/AdminLogoutServlet.java): `src/main/java/com/blooddonor/servlet/AdminLogoutServlet.java`

### Application layers

- [Registration handler](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/RegisterDonorServlet.java): `src/main/java/com/blooddonor/servlet/RegisterDonorServlet.java`
- [Donor search](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/servlet/SearchDonorServlet.java): `src/main/java/com/blooddonor/servlet/SearchDonorServlet.java`
- [Donor data access](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/dao/DonorDAO.java): `src/main/java/com/blooddonor/dao/DonorDAO.java`
- [Admin data access](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/dao/AdminDAO.java): `src/main/java/com/blooddonor/dao/AdminDAO.java`
- [Password utilities](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/util/PasswordUtil.java): `src/main/java/com/blooddonor/util/PasswordUtil.java`
- [Donor model](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/model/Donor.java): `src/main/java/com/blooddonor/model/Donor.java`
- [Admin model](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/model/Admin.java): `src/main/java/com/blooddonor/model/Admin.java`
- [JDBC connection](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/src/main/java/com/blooddonor/util/DBConnection.java): `src/main/java/com/blooddonor/util/DBConnection.java`

### Persistence

- [Database schema](https://github.com/nikhiljain25106/blooddonormanagementsystem/blob/main/database/schema.sql): `database/schema.sql`

### Other components

- **Visitor**
- **Donor**
- **Administrator**
- **MySQL database**

## Connections

- Visitor → Home and guidance: browses
- Visitor → Registration handler: submits
- Donor → Registration handler: submits
- Registration handler → Registration form: forwards
- Registration handler → Donor data access: checks and inserts
- Donor data access → Donor model: maps records
- Visitor → Donor search: searches
- Donor search → Donor data access: queries
- Donor search → Search page: forwards results
- Visitor → Contact page: views
- Administrator → Admin authentication: authenticates
- Admin authentication → Admin login: uses
- Admin authentication → Admin data access: looks up account
- Admin data access → Admin model: maps account
- Admin authentication → Password utilities: verifies hash
- Administrator → Admin access filter: requests protected pages
- Admin access filter → Donor dashboard: allows session
- Admin access filter → Donor editing: allows session
- Admin access filter → Donor deletion: allows session
- Donor dashboard → Donor data access: loads donors
- Donor dashboard → Dashboard view: forwards records
- Donor editing → Donor data access: reads and updates
- Donor editing → Edit form: forwards donor
- Donor deletion → Donor data access: deletes donor
- Administrator → Admin logout: logs out
- Donor data access → JDBC connection: opens connection
- Admin data access → JDBC connection: opens connection
- JDBC connection → MySQL database: connects
- Database schema → MySQL database: defines tables
