# venugopal-maker/meditrack-pharmacy-management architecture

> Architecture diagram of the GitHub repository venugopal-maker/meditrack-pharmacy-management, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/venugopal-maker/meditrack-pharmacy-management
- Repository: https://github.com/venugopal-maker/meditrack-pharmacy-management

## Overview

MediTrack is a pharmacy-management web application. Staff use its bundled web interface to sign in, maintain medicine, batch and supplier records, monitor expiry and dashboard totals, and record sales with payment-method details and transaction history. The Java servlets implement these domain stages and use JDBC for persistence; sales processing locks batches and commits sale, payment and stock changes together. The README documents the UI and API capabilities, but frontend source was not sampled, so UI-to-endpoint wiring is not asserted.

Main entry points: [`src/main/webapp/index.html`](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/webapp/index.html) (Web Interface), [`src/main/java/com/meditrack/config/Database.java`](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/config/Database.java) (JDBC Connection), [`src/main/java/com/meditrack/utils/Json.java`](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/utils/Json.java) (JSON Responses), [`src/main/java/com/meditrack/servlets/AuthServlet.java`](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/AuthServlet.java) (Accounts and Sessions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web Access"]
  node_ui["Web Interface<br/>[index.html]"]
  node_auth["Accounts and Sessions<br/>[AuthServlet.java]"]
  node_filter["Session Access Filter<br/>[AuthFilter.java]"]
end

subgraph group_inventory["Inventory Management"]
  node_medicine["Medicine Catalogue"]
  node_batches["Batch Inventory<br/>[BatchServlet.java]"]
  node_suppliers["Supplier Records"]
  node_expiry["Expiry Monitoring<br/>[ExpiryServlet.java]"]
end

subgraph group_sales["Sales Operations"]
  node_pos["POS Sales<br/>[SalesServlet.java]"]
  node_history["Transaction History<br/>[SalesServlet.java]"]
  node_dashboard["Dashboard Totals"]
end

subgraph group_platform["Application Services"]
  node_health["Health Check<br/>[HealthServlet.java]"]
  node_database_config["JDBC Connection<br/>[Database.java]"]
  node_json["JSON Responses<br/>[Json.java]"]
end

node_staff(("Pharmacy Staff"))
node_store[("MySQL Database<br/>[schema.sql]")]

node_staff -->|"uses"| node_ui
node_ui -.->|"calls API"| node_auth
node_ui -.->|"calls API"| node_medicine
node_ui -.->|"calls API"| node_batches
node_ui -.->|"calls API"| node_suppliers
node_ui -.->|"calls API"| node_expiry
node_ui -.->|"calls API"| node_pos
node_ui -.->|"calls API"| node_history
node_ui -.->|"calls API"| node_dashboard
node_filter -->|"allows routes"| node_auth
node_auth -->|"opens connection"| node_database_config
node_medicine -->|"opens connection"| node_database_config
node_batches -->|"opens connection"| node_database_config
node_suppliers -->|"opens connection"| node_database_config
node_expiry -->|"opens connection"| node_database_config
node_pos -->|"opens connection"| node_database_config
node_history -->|"opens connection"| node_database_config
node_dashboard -->|"opens connection"| node_database_config
node_health -->|"checks connection"| node_database_config
node_auth -->|"sends responses"| node_json
node_medicine -->|"sends responses"| node_json
node_batches -->|"sends responses"| node_json
node_suppliers -->|"sends responses"| node_json
node_expiry -->|"sends responses"| node_json
node_pos -->|"sends responses"| node_json
node_history -->|"sends responses"| node_json
node_dashboard -->|"sends responses"| node_json
node_health -->|"sends responses"| node_json
node_database_config -->|"connects to"| node_store

click node_ui "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/webapp/index.html"
click node_auth "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/AuthServlet.java"
click node_filter "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/filters/AuthFilter.java"
click node_medicine "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/MedicineServlet.java"
click node_batches "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/BatchServlet.java"
click node_suppliers "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/SupplierServlet.java"
click node_expiry "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/ExpiryServlet.java"
click node_pos "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/SalesServlet.java"
click node_history "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/SalesServlet.java"
click node_dashboard "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/DashboardServlet.java"
click node_health "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/HealthServlet.java"
click node_database_config "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/config/Database.java"
click node_json "https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/utils/Json.java"
click node_store "https://github.com/venugopal-maker/meditrack-pharmacy-management/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_ui,node_auth,node_filter toneBlue
class node_medicine,node_batches,node_suppliers,node_expiry,node_store toneAmber
class node_pos,node_history,node_dashboard toneMint
class node_health,node_database_config,node_json toneRose
class node_staff toneIndigo
```

## Components

### Web Access

- [Web Interface](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/webapp/index.html): `src/main/webapp/index.html`
- [Accounts and Sessions](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/AuthServlet.java): `src/main/java/com/meditrack/servlets/AuthServlet.java`
- [Session Access Filter](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/filters/AuthFilter.java): `src/main/java/com/meditrack/filters/AuthFilter.java`

### Inventory Management

- [Medicine Catalogue](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/MedicineServlet.java): `src/main/java/com/meditrack/servlets/MedicineServlet.java`
- [Batch Inventory](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/BatchServlet.java): `src/main/java/com/meditrack/servlets/BatchServlet.java`
- [Supplier Records](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/SupplierServlet.java): `src/main/java/com/meditrack/servlets/SupplierServlet.java`
- [Expiry Monitoring](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/ExpiryServlet.java): `src/main/java/com/meditrack/servlets/ExpiryServlet.java`

### Sales Operations

- [POS Sales](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/SalesServlet.java): `src/main/java/com/meditrack/servlets/SalesServlet.java`
- [Transaction History](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/SalesServlet.java): `src/main/java/com/meditrack/servlets/SalesServlet.java`
- [Dashboard Totals](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/DashboardServlet.java): `src/main/java/com/meditrack/servlets/DashboardServlet.java`

### Application Services

- [Health Check](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/servlets/HealthServlet.java): `src/main/java/com/meditrack/servlets/HealthServlet.java`
- [JDBC Connection](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/config/Database.java): `src/main/java/com/meditrack/config/Database.java`
- [JSON Responses](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/src/main/java/com/meditrack/utils/Json.java): `src/main/java/com/meditrack/utils/Json.java`

### Other components

- **Pharmacy Staff**
- [MySQL Database](https://github.com/venugopal-maker/meditrack-pharmacy-management/blob/main/database/schema.sql): `database/schema.sql`

## Connections

- Pharmacy Staff → Web Interface: uses (evidence: `README.md`)
- Web Interface → Accounts and Sessions: calls API
- Web Interface → Medicine Catalogue: calls API
- Web Interface → Batch Inventory: calls API
- Web Interface → Supplier Records: calls API
- Web Interface → Expiry Monitoring: calls API
- Web Interface → POS Sales: calls API
- Web Interface → Transaction History: calls API
- Web Interface → Dashboard Totals: calls API
- Session Access Filter → Accounts and Sessions: allows routes (evidence: `src/main/java/com/meditrack/filters/AuthFilter.java`)
- Accounts and Sessions → JDBC Connection: opens connection (evidence: `src/main/java/com/meditrack/servlets/AuthServlet.java`)
- Medicine Catalogue → JDBC Connection: opens connection (evidence: `src/main/java/com/meditrack/servlets/MedicineServlet.java`)
- Batch Inventory → JDBC Connection: opens connection (evidence: `src/main/java/com/meditrack/servlets/BatchServlet.java`)
- Supplier Records → JDBC Connection: opens connection (evidence: `src/main/java/com/meditrack/servlets/SupplierServlet.java`)
- Expiry Monitoring → JDBC Connection: opens connection (evidence: `src/main/java/com/meditrack/servlets/ExpiryServlet.java`)
- POS Sales → JDBC Connection: opens connection (evidence: `src/main/java/com/meditrack/servlets/SalesServlet.java`)
- Transaction History → JDBC Connection: opens connection (evidence: `src/main/java/com/meditrack/servlets/SalesServlet.java`)
- Dashboard Totals → JDBC Connection: opens connection (evidence: `src/main/java/com/meditrack/servlets/DashboardServlet.java`)
- Health Check → JDBC Connection: checks connection (evidence: `src/main/java/com/meditrack/servlets/HealthServlet.java`)
- Accounts and Sessions → JSON Responses: sends responses (evidence: `src/main/java/com/meditrack/servlets/AuthServlet.java`)
- Medicine Catalogue → JSON Responses: sends responses (evidence: `src/main/java/com/meditrack/servlets/MedicineServlet.java`)
- Batch Inventory → JSON Responses: sends responses (evidence: `src/main/java/com/meditrack/servlets/BatchServlet.java`)
- Supplier Records → JSON Responses: sends responses (evidence: `src/main/java/com/meditrack/servlets/SupplierServlet.java`)
- Expiry Monitoring → JSON Responses: sends responses (evidence: `src/main/java/com/meditrack/servlets/ExpiryServlet.java`)
- POS Sales → JSON Responses: sends responses (evidence: `src/main/java/com/meditrack/servlets/SalesServlet.java`)
- Transaction History → JSON Responses: sends responses (evidence: `src/main/java/com/meditrack/servlets/SalesServlet.java`)
- Dashboard Totals → JSON Responses: sends responses (evidence: `src/main/java/com/meditrack/servlets/DashboardServlet.java`)
- Health Check → JSON Responses: sends responses (evidence: `src/main/java/com/meditrack/servlets/HealthServlet.java`)
- JDBC Connection → MySQL Database: connects to (evidence: `src/main/java/com/meditrack/config/Database.java`)
