# 0xsaadbinsultan/pharmacy-app architecture

> Architecture diagram of the GitHub repository 0xsaadbinsultan/pharmacy-app, 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/0xsaadbinsultan/pharmacy-app
- Repository: https://github.com/0xsaadbinsultan/pharmacy-app

## Overview

This is a local Java Swing pharmacy sales demo. A staff user searches and filters a sample medicine catalog, selects dosage and quantity, adds items to a cart, reviews totals, then checks out with a customer name and simulated Cash/Card choice. Confirmation creates a receipt snapshot and clears the cart; receipts can be viewed, printed, saved, and reopened. The graph separates the UI workflow from its catalog and transaction model. PharmacyApp excerpts are partial, so uncertain internal call wiring is omitted; documented capabilities are retained.

Main entry points: [`PharmacyApp.java`](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/PharmacyApp.java) (Swing dashboard), [`CartModel.java`](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/CartModel.java) (Cart and totals), [`MedicineImages.java`](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/MedicineImages.java) (Thumbnails), [`Medicine.java`](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/Medicine.java) (Medicine catalog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop workflow"]
  node_app["Swing dashboard<br/>[PharmacyApp.java]"]
  node_search["Search and filters<br/>[PharmacyApp.java]"]
  node_medicine_cards["Medicine cards<br/>[PharmacyApp.java]"]
  node_checkout["Checkout dialog<br/>[PharmacyApp.java]"]
end

subgraph group_catalog["Catalog"]
  node_catalog_data["Medicine catalog<br/>[Medicine.java]"]
  node_images["Thumbnails"]
end

subgraph group_transaction["Cart and receipt"]
  node_cart_ui["Cart controls<br/>[PharmacyApp.java]"]
  node_cart_model["Cart and totals<br/>[CartModel.java]"]
  node_receipt["Receipt snapshot<br/>[Receipt.java]"]
end

node_staff(("Staff user"))
node_local_files["Local files"]
node_printer["Desktop printer"]

node_staff -->|"uses"| node_app
node_app -->|"presents"| node_search
node_search -->|"filters"| node_catalog_data
node_app -->|"displays"| node_medicine_cards
node_app -->|"loads samples"| node_catalog_data
node_medicine_cards -->|"loads thumbnails"| node_images
node_images -.->|"reads images"| node_local_files
node_medicine_cards -->|"adds selections"| node_cart_model
node_app -->|"presents"| node_cart_ui
node_cart_ui -->|"updates"| node_cart_model
node_cart_ui -->|"opens"| node_checkout
node_checkout -->|"creates receipt"| node_cart_model
node_checkout -->|"clears after confirmation"| node_cart_model
node_cart_model -->|"snapshots order"| node_receipt
node_app -->|"shows latest"| node_receipt
node_app -->|"saves text"| node_local_files
node_app -->|"prints receipt"| node_printer

click node_app "https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/PharmacyApp.java"
click node_search "https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/PharmacyApp.java"
click node_medicine_cards "https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/PharmacyApp.java"
click node_checkout "https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/PharmacyApp.java"
click node_catalog_data "https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/Medicine.java"
click node_images "https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/MedicineImages.java"
click node_cart_ui "https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/PharmacyApp.java"
click node_cart_model "https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/CartModel.java"
click node_receipt "https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/Receipt.java"

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_search,node_medicine_cards,node_checkout,node_staff toneBlue
class node_catalog_data,node_images toneAmber
class node_cart_ui,node_cart_model,node_receipt toneMint
class node_local_files,node_printer toneIndigo
```

## Components

### Desktop workflow

- [Swing dashboard](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/PharmacyApp.java): `PharmacyApp.java`
- [Search and filters](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/PharmacyApp.java): `PharmacyApp.java`
- [Medicine cards](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/PharmacyApp.java): `PharmacyApp.java`
- [Checkout dialog](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/PharmacyApp.java): `PharmacyApp.java`

### Catalog

- [Medicine catalog](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/Medicine.java): `Medicine.java`
- [Thumbnails](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/MedicineImages.java): `MedicineImages.java`

### Cart and receipt

- [Cart controls](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/PharmacyApp.java): `PharmacyApp.java`
- [Cart and totals](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/CartModel.java): `CartModel.java`
- [Receipt snapshot](https://github.com/0xsaadbinsultan/pharmacy-app/blob/main/Receipt.java): `Receipt.java`

### Other components

- **Staff user**
- **Local files**
- **Desktop printer**

## Connections

- Staff user → Swing dashboard: uses
- Swing dashboard → Search and filters: presents
- Search and filters → Medicine catalog: filters
- Swing dashboard → Medicine cards: displays
- Swing dashboard → Medicine catalog: loads samples
- Medicine cards → Thumbnails: loads thumbnails
- Thumbnails → Local files: reads images
- Medicine cards → Cart and totals: adds selections
- Swing dashboard → Cart controls: presents
- Cart controls → Cart and totals: updates
- Cart controls → Checkout dialog: opens
- Checkout dialog → Cart and totals: creates receipt
- Checkout dialog → Cart and totals: clears after confirmation
- Cart and totals → Receipt snapshot: snapshots order
- Swing dashboard → Receipt snapshot: shows latest
- Swing dashboard → Local files: saves text
- Swing dashboard → Desktop printer: prints receipt
