# ericson487/nikkitea architecture

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

- Interactive diagram: https://gitdiagram.com/ericson487/nikkitea
- Repository: https://github.com/ericson487/nikkitea

## Overview

JavaCup is a session-only Swing point-of-sale application. Staff sign in, browse and customize menu items, manage a cart and order type, then take cash payment and produce a receipt; paid orders update session inventory and appear in sales history and dashboard metrics. Most operational features are implemented together in MilkTeaPOS.java, so those nodes share that exact path. Relationships among unsampled UI sections are limited to capabilities documented in the README; the app has no persistent database or external service.

Main entry points: [`MilkTeaPOS.java`](https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java) (POS workspace), [`MenuItem.java`](https://github.com/ericson487/nikkitea/blob/master/MenuItem.java) (Menu item base), [`CartItem.java`](https://github.com/ericson487/nikkitea/blob/master/CartItem.java) (Cart item model), [`LoginFrame.java`](https://github.com/ericson487/nikkitea/blob/master/LoginFrame.java) (Login screen)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_launcher["App launcher<br/>[Amain.java]"]
  node_login["Login screen<br/>[LoginFrame.java]"]
  node_pos["POS workspace<br/>[MilkTeaPOS.java]"]
end

subgraph group_catalog["Menu and models"]
  node_menu["Menu browsing<br/>[MilkTeaPOS.java]"]
  node_menuitem["Menu item base<br/>[MenuItem.java]"]
  node_milktea["Milk tea<br/>[MilkTea.java]"]
  node_fruittea["Fruit tea<br/>[FruitTea.java]"]
  node_snack["Snack<br/>[Snack.java]"]
  node_addon["Add-on<br/>[AddOn.java]"]
end

subgraph group_checkout["Order and payment"]
  node_customize["Drink customization<br/>[MilkTeaPOS.java]"]
  node_cartflow["Cart management<br/>[MilkTeaPOS.java]"]
  node_cartitem["Cart item model<br/>[CartItem.java]"]
  node_payment["Cash checkout<br/>[MilkTeaPOS.java]"]
  node_receipt["Receipt creation<br/>[MilkTeaPOS.java]"]
  node_sale["Completed sale<br/>[Sale.java]"]
end

subgraph group_operations["Store operations"]
  node_inventory[("Inventory tracking<br/>[MilkTeaPOS.java]")]
  node_dashboard["Dashboard metrics<br/>[MilkTeaPOS.java]"]
  node_history["Recent sales history<br/>[MilkTeaPOS.java]"]
end

node_staff(("Staff"))

node_staff -->|"enters credentials"| node_login
node_launcher -->|"opens"| node_login
node_login -->|"opens after sign-in"| node_pos
node_staff -->|"uses"| node_pos
node_pos -->|"provides"| node_menu
node_menu -->|"displays products"| node_menuitem
node_milktea -->|"extends"| node_menuitem
node_fruittea -->|"extends"| node_menuitem
node_snack -->|"extends"| node_menuitem
node_addon -->|"extends"| node_menuitem
node_menu -->|"offers options"| node_customize
node_customize -->|"selects"| node_addon
node_pos -->|"manages"| node_cartflow
node_cartflow -->|"creates"| node_cartitem
node_cartitem -->|"references product"| node_menuitem
node_cartitem -->|"references add-ons"| node_addon
node_cartflow -->|"proceeds to"| node_payment
node_payment -->|"creates"| node_receipt
node_payment -->|"records"| node_sale
node_payment -->|"deducts stock"| node_inventory
node_pos -->|"tracks quantities"| node_inventory
node_pos -->|"shows metrics"| node_dashboard
node_pos -->|"shows completed orders"| node_history
node_history -->|"reads sale details"| node_sale

click node_launcher "https://github.com/ericson487/nikkitea/blob/master/Amain.java"
click node_login "https://github.com/ericson487/nikkitea/blob/master/LoginFrame.java"
click node_pos "https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java"
click node_menu "https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java"
click node_menuitem "https://github.com/ericson487/nikkitea/blob/master/MenuItem.java"
click node_milktea "https://github.com/ericson487/nikkitea/blob/master/MilkTea.java"
click node_fruittea "https://github.com/ericson487/nikkitea/blob/master/FruitTea.java"
click node_snack "https://github.com/ericson487/nikkitea/blob/master/Snack.java"
click node_addon "https://github.com/ericson487/nikkitea/blob/master/AddOn.java"
click node_customize "https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java"
click node_cartflow "https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java"
click node_cartitem "https://github.com/ericson487/nikkitea/blob/master/CartItem.java"
click node_payment "https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java"
click node_receipt "https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java"
click node_sale "https://github.com/ericson487/nikkitea/blob/master/Sale.java"
click node_inventory "https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java"
click node_dashboard "https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java"
click node_history "https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.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_launcher,node_login,node_pos toneBlue
class node_menu,node_menuitem,node_milktea,node_fruittea,node_snack,node_addon toneAmber
class node_customize,node_cartflow,node_cartitem,node_payment,node_receipt,node_sale toneMint
class node_inventory,node_dashboard,node_history toneRose
class node_staff toneIndigo
```

## Components

### Application entry

- [App launcher](https://github.com/ericson487/nikkitea/blob/master/Amain.java): `Amain.java`
- [Login screen](https://github.com/ericson487/nikkitea/blob/master/LoginFrame.java): `LoginFrame.java`
- [POS workspace](https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java): `MilkTeaPOS.java`

### Menu and models

- [Menu browsing](https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java): `MilkTeaPOS.java`
- [Menu item base](https://github.com/ericson487/nikkitea/blob/master/MenuItem.java): `MenuItem.java`
- [Milk tea](https://github.com/ericson487/nikkitea/blob/master/MilkTea.java): `MilkTea.java`
- [Fruit tea](https://github.com/ericson487/nikkitea/blob/master/FruitTea.java): `FruitTea.java`
- [Snack](https://github.com/ericson487/nikkitea/blob/master/Snack.java): `Snack.java`
- [Add-on](https://github.com/ericson487/nikkitea/blob/master/AddOn.java): `AddOn.java`

### Order and payment

- [Drink customization](https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java): `MilkTeaPOS.java`
- [Cart management](https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java): `MilkTeaPOS.java`
- [Cart item model](https://github.com/ericson487/nikkitea/blob/master/CartItem.java): `CartItem.java`
- [Cash checkout](https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java): `MilkTeaPOS.java`
- [Receipt creation](https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java): `MilkTeaPOS.java`
- [Completed sale](https://github.com/ericson487/nikkitea/blob/master/Sale.java): `Sale.java`

### Store operations

- [Inventory tracking](https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java): `MilkTeaPOS.java`
- [Dashboard metrics](https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java): `MilkTeaPOS.java`
- [Recent sales history](https://github.com/ericson487/nikkitea/blob/master/MilkTeaPOS.java): `MilkTeaPOS.java`

### Other components

- **Staff**

## Connections

- Staff → Login screen: enters credentials (evidence: `README.md`)
- App launcher → Login screen: opens (evidence: `Amain.java`)
- Login screen → POS workspace: opens after sign-in (evidence: `LoginFrame.java`)
- Staff → POS workspace: uses (evidence: `README.md`)
- POS workspace → Menu browsing: provides (evidence: `README.md`)
- Menu browsing → Menu item base: displays products (evidence: `MilkTeaPOS.java`)
- Milk tea → Menu item base: extends (evidence: `MilkTea.java`)
- Fruit tea → Menu item base: extends (evidence: `FruitTea.java`)
- Snack → Menu item base: extends (evidence: `Snack.java`)
- Add-on → Menu item base: extends (evidence: `AddOn.java`)
- Menu browsing → Drink customization: offers options (evidence: `README.md`)
- Drink customization → Add-on: selects (evidence: `MilkTeaPOS.java`)
- POS workspace → Cart management: manages (evidence: `MilkTeaPOS.java`)
- Cart management → Cart item model: creates (evidence: `MilkTeaPOS.java`)
- Cart item model → Menu item base: references product (evidence: `CartItem.java`)
- Cart item model → Add-on: references add-ons (evidence: `CartItem.java`)
- Cart management → Cash checkout: proceeds to (evidence: `README.md`)
- Cash checkout → Receipt creation: creates (evidence: `MilkTeaPOS.java`)
- Cash checkout → Completed sale: records (evidence: `README.md`)
- Cash checkout → Inventory tracking: deducts stock (evidence: `MilkTeaPOS.java`)
- POS workspace → Inventory tracking: tracks quantities (evidence: `MilkTeaPOS.java`)
- POS workspace → Dashboard metrics: shows metrics (evidence: `README.md`)
- POS workspace → Recent sales history: shows completed orders (evidence: `MilkTeaPOS.java`)
- Recent sales history → Completed sale: reads sale details (evidence: `MilkTeaPOS.java`)
