# haikalazhari/coffeehub architecture

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

- Interactive diagram: https://gitdiagram.com/haikalazhari/coffeehub
- Repository: https://github.com/haikalazhari/coffeehub

## Overview

CoffeeHub is a JavaFX desktop system for coffee-shop operations, with Admin and Customer workflows. Customers browse products, manage a cart, check out with cash, and review order history; Admins manage products, categories, stock, orders, and cash-payment status. The graph includes the database-backed data layer and in-memory cart/session services. Some controllers and UI wiring were not sampled; links for those workflows rely on README descriptions, not inspected controller implementations.

Main entry points: [`src/main/java/com/voidsyntax/coffeehub/repository/ProductDAO.java`](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/repository/ProductDAO.java) (Product data access), [`src/main/java/com/voidsyntax/coffeehub/repository/OrderDAO.java`](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/repository/OrderDAO.java) (Order data access), [`src/main/java/com/voidsyntax/coffeehub/config/DatabaseConnection.java`](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/config/DatabaseConnection.java) (JDBC connection), [`src/main/java/com/voidsyntax/coffeehub/controller/CustomerCheckoutController.java`](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/CustomerCheckoutController.java) (Cash checkout)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop workflows"]
  node_main["Application entry<br/>[Main.java]"]
  node_auth["Login and registration"]
end

subgraph group_customer["Customer ordering"]
  node_catalog["Product catalog"]
  node_cart_ui["Shopping cart"]
  node_checkout["Cash checkout"]
  node_history["Order history"]
end

subgraph group_admin["Admin operations"]
  node_admin_home["Admin dashboard"]
  node_products["Product management"]
  node_categories["Category management"]
  node_stock["Stock management"]
  node_admin_orders["Order and payment management"]
end

subgraph group_core["Services and data"]
  node_cart["Cart state<br/>[CartManager.java]"]
  node_session["User session"]
  node_users["User service<br/>[UserService.java]"]
  node_product_dao["Product data access<br/>[ProductDAO.java]"]
  node_category_dao["Category data access<br/>[CategoryDAO.java]"]
  node_order_dao["Order data access<br/>[OrderDAO.java]"]
  node_user_dao["User data access<br/>[UserDAO.java]"]
  node_db_connection["JDBC connection"]
  node_database[("CoffeeHub database<br/>[coffeehub.sql]")]
end

node_user(("User"))
node_mariadb[("MariaDB server")]

node_user -.->|"launches"| node_main
node_user -.->|"signs in"| node_auth
node_user -.->|"uses admin"| node_admin_home
node_user -.->|"browses"| node_catalog
node_user -.->|"manages cart"| node_cart_ui
node_user -.->|"checks out"| node_checkout
node_user -.->|"reviews orders"| node_history
node_admin_home -->|"loads summaries"| node_product_dao
node_admin_home -->|"loads summaries"| node_category_dao
node_admin_home -->|"loads summaries"| node_order_dao
node_products -->|"manages products"| node_product_dao
node_categories -->|"manages categories"| node_category_dao
node_stock -->|"updates stock"| node_product_dao
node_admin_orders -->|"manages orders"| node_order_dao
node_catalog -->|"loads catalog"| node_product_dao
node_cart_ui -->|"manages items"| node_cart
node_checkout -->|"reads cart"| node_cart
node_checkout -->|"creates order"| node_order_dao
node_checkout -->|"checks products"| node_product_dao
node_history -->|"loads history"| node_order_dao
node_users -->|"authenticates users"| node_user_dao
node_product_dao -->|"opens connection"| node_db_connection
node_category_dao -->|"opens connection"| node_db_connection
node_order_dao -->|"opens connection"| node_db_connection
node_user_dao -->|"opens connection"| node_db_connection
node_db_connection -->|"connects via JDBC"| node_mariadb
node_mariadb -.->|"stores records"| node_database

click node_main "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/Main.java"
click node_auth "https://github.com/haikalazhari/coffeehub/tree/main/src/main/java/com/voidsyntax/coffeehub/controller"
click node_admin_home "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/AdminController.java"
click node_products "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/ProductsController.java"
click node_categories "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/CategoriesController.java"
click node_stock "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/StockController.java"
click node_admin_orders "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/OrdersController.java"
click node_catalog "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/CustomerController.java"
click node_cart_ui "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/CustomerCartController.java"
click node_checkout "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/CustomerCheckoutController.java"
click node_history "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/CustomerOrdersController.java"
click node_cart "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/service/CartManager.java"
click node_session "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/service/SessionManager.java"
click node_users "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/service/UserService.java"
click node_product_dao "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/repository/ProductDAO.java"
click node_category_dao "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/repository/CategoryDAO.java"
click node_order_dao "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/repository/OrderDAO.java"
click node_user_dao "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/repository/UserDAO.java"
click node_db_connection "https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/config/DatabaseConnection.java"
click node_database "https://github.com/haikalazhari/coffeehub/blob/main/database/coffeehub.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_main,node_auth,node_user toneBlue
class node_catalog,node_cart_ui,node_checkout,node_history,node_mariadb toneAmber
class node_admin_home,node_products,node_categories,node_stock,node_admin_orders toneMint
class node_cart,node_session,node_users,node_product_dao,node_category_dao,node_order_dao,node_user_dao,node_db_connection,node_database toneRose
```

## Components

### Desktop workflows

- [Application entry](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/Main.java): `src/main/java/com/voidsyntax/coffeehub/Main.java`
- [Login and registration](https://github.com/haikalazhari/coffeehub/tree/main/src/main/java/com/voidsyntax/coffeehub/controller): `src/main/java/com/voidsyntax/coffeehub/controller`

### Customer ordering

- [Product catalog](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/CustomerController.java): `src/main/java/com/voidsyntax/coffeehub/controller/CustomerController.java`
- [Shopping cart](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/CustomerCartController.java): `src/main/java/com/voidsyntax/coffeehub/controller/CustomerCartController.java`
- [Cash checkout](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/CustomerCheckoutController.java): `src/main/java/com/voidsyntax/coffeehub/controller/CustomerCheckoutController.java`
- [Order history](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/CustomerOrdersController.java): `src/main/java/com/voidsyntax/coffeehub/controller/CustomerOrdersController.java`

### Admin operations

- [Admin dashboard](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/AdminController.java): `src/main/java/com/voidsyntax/coffeehub/controller/AdminController.java`
- [Product management](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/ProductsController.java): `src/main/java/com/voidsyntax/coffeehub/controller/ProductsController.java`
- [Category management](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/CategoriesController.java): `src/main/java/com/voidsyntax/coffeehub/controller/CategoriesController.java`
- [Stock management](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/StockController.java): `src/main/java/com/voidsyntax/coffeehub/controller/StockController.java`
- [Order and payment management](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/controller/OrdersController.java): `src/main/java/com/voidsyntax/coffeehub/controller/OrdersController.java`

### Services and data

- [Cart state](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/service/CartManager.java): `src/main/java/com/voidsyntax/coffeehub/service/CartManager.java`
- [User session](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/service/SessionManager.java): `src/main/java/com/voidsyntax/coffeehub/service/SessionManager.java`
- [User service](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/service/UserService.java): `src/main/java/com/voidsyntax/coffeehub/service/UserService.java`
- [Product data access](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/repository/ProductDAO.java): `src/main/java/com/voidsyntax/coffeehub/repository/ProductDAO.java`
- [Category data access](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/repository/CategoryDAO.java): `src/main/java/com/voidsyntax/coffeehub/repository/CategoryDAO.java`
- [Order data access](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/repository/OrderDAO.java): `src/main/java/com/voidsyntax/coffeehub/repository/OrderDAO.java`
- [User data access](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/repository/UserDAO.java): `src/main/java/com/voidsyntax/coffeehub/repository/UserDAO.java`
- [JDBC connection](https://github.com/haikalazhari/coffeehub/blob/main/src/main/java/com/voidsyntax/coffeehub/config/DatabaseConnection.java): `src/main/java/com/voidsyntax/coffeehub/config/DatabaseConnection.java`
- [CoffeeHub database](https://github.com/haikalazhari/coffeehub/blob/main/database/coffeehub.sql): `database/coffeehub.sql`

### Other components

- **User**
- **MariaDB server**

## Connections

- User → Application entry: launches (evidence: `README.md`)
- User → Login and registration: signs in (evidence: `README.md`)
- User → Admin dashboard: uses admin (evidence: `README.md`)
- User → Product catalog: browses (evidence: `README.md`)
- User → Shopping cart: manages cart (evidence: `README.md`)
- User → Cash checkout: checks out (evidence: `README.md`)
- User → Order history: reviews orders (evidence: `README.md`)
- Admin dashboard → Product data access: loads summaries (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/AdminController.java`)
- Admin dashboard → Category data access: loads summaries (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/AdminController.java`)
- Admin dashboard → Order data access: loads summaries (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/AdminController.java`)
- Product management → Product data access: manages products (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/ProductsController.java`)
- Category management → Category data access: manages categories (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/CategoriesController.java`)
- Stock management → Product data access: updates stock (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/StockController.java`)
- Order and payment management → Order data access: manages orders (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/OrdersController.java`)
- Product catalog → Product data access: loads catalog (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/CustomerController.java`)
- Shopping cart → Cart state: manages items (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/CustomerCartController.java`)
- Cash checkout → Cart state: reads cart (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/CustomerCheckoutController.java`)
- Cash checkout → Order data access: creates order (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/CustomerCheckoutController.java`)
- Cash checkout → Product data access: checks products (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/CustomerCheckoutController.java`)
- Order history → Order data access: loads history (evidence: `src/main/java/com/voidsyntax/coffeehub/controller/CustomerOrdersController.java`)
- User service → User data access: authenticates users (evidence: `src/main/java/com/voidsyntax/coffeehub/service/UserService.java`)
- Product data access → JDBC connection: opens connection (evidence: `src/main/java/com/voidsyntax/coffeehub/repository/ProductDAO.java`)
- Category data access → JDBC connection: opens connection (evidence: `src/main/java/com/voidsyntax/coffeehub/repository/CategoryDAO.java`)
- Order data access → JDBC connection: opens connection (evidence: `src/main/java/com/voidsyntax/coffeehub/repository/OrderDAO.java`)
- User data access → JDBC connection: opens connection (evidence: `src/main/java/com/voidsyntax/coffeehub/repository/UserDAO.java`)
- JDBC connection → MariaDB server: connects via JDBC (evidence: `src/main/java/com/voidsyntax/coffeehub/config/DatabaseConnection.java`)
- MariaDB server → CoffeeHub database: stores records (evidence: `README.md`)
