# haidang9107/bidding architecture

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

- Interactive diagram: https://gitdiagram.com/haidang9107/bidding
- Repository: https://github.com/haidang9107/bidding

## Overview

This is a JavaFX client/server online auction system: users browse or manage listings, participate in live auctions, and use account and finance features; the server processes requests and persists system state. The README documents TCP/JSON requests and responses, server broadcasts, and the shared protocol module. The source excerpts were unavailable, so internal dispatch and service-to-storage wiring are not asserted; feature modules are represented from the repository tree and documented capabilities.

Main entry points: [`server/src/main/java/org/example/server/repository`](https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/repository) (Data access), [`client/src/main/java/org/example/client/network/SocketClient.java`](https://github.com/haidang9107/bidding/blob/main/client/src/main/java/org/example/client/network/SocketClient.java) (Socket client), [`server/src/main/java/org/example/server/network/SocketServer.java`](https://github.com/haidang9107/bidding/blob/main/server/src/main/java/org/example/server/network/SocketServer.java) (Socket server), [`client/src/main/java/org/example/client/controller`](https://github.com/haidang9107/bidding/tree/main/client/src/main/java/org/example/client/controller) (User and admin screens)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client experience"]
  node_client_app["JavaFX app<br/>[ClientApp.java]"]
  node_client_screens["User and admin screens"]
  node_client_auction["Auction views"]
  node_client_socket["Socket client<br/>[SocketClient.java]"]
  node_client_listener["Server listener"]
end

subgraph group_protocol["Shared protocol"]
  node_shared_messages["Requests and responses"]
  node_shared_payload["Network payloads"]
end

subgraph group_server["Auction services"]
  node_socket_server["Socket server<br/>[SocketServer.java]"]
  node_command_handler["Command handler"]
  node_auction_service["Auction lifecycle"]
  node_bid_service["Bidding and auto-bids"]
  node_product_service["Product listings"]
  node_user_service["Accounts and watchlists"]
  node_finance_service["Finance and transfers"]
  node_admin_service["Administration<br/>[AdminService.java]"]
end

subgraph group_state["Persistence and events"]
  node_events["Live event notifications"]
  node_broadcaster["Socket broadcaster<br/>[Broadcaster.java]"]
  node_repositories["Data access"]
  node_mysql[("MySQL database<br/>[1schema.sql]")]
end

node_user(("User"))

node_user -->|"uses"| node_client_app
node_client_app -->|"opens"| node_client_screens
node_client_screens -->|"views"| node_client_auction
node_client_screens -->|"sends requests"| node_client_socket
node_client_auction -->|"sends requests"| node_client_socket
node_client_socket -->|"encodes requests"| node_shared_messages
node_shared_messages -->|"carries payloads"| node_shared_payload
node_client_socket -->|"sends JSON over TCP"| node_socket_server
node_socket_server -->|"returns responses"| node_client_socket
node_socket_server -->|"exchanges messages"| node_shared_messages
node_socket_server -->|"broadcasts updates"| node_broadcaster
node_broadcaster -->|"pushes updates"| node_client_listener
node_client_listener -->|"updates views"| node_client_auction
node_auction_service -->|"persists auction state"| node_repositories
node_bid_service -->|"persists bids"| node_repositories
node_product_service -->|"persists listings"| node_repositories
node_user_service -->|"persists account data"| node_repositories
node_finance_service -->|"persists transactions"| node_repositories
node_admin_service -->|"accesses system data"| node_repositories
node_repositories -->|"reads and writes"| node_mysql
node_events -->|"dispatches notifications"| node_broadcaster

click node_client_app "https://github.com/haidang9107/bidding/blob/main/client/src/main/java/org/example/client/ClientApp.java"
click node_client_screens "https://github.com/haidang9107/bidding/tree/main/client/src/main/java/org/example/client/controller"
click node_client_auction "https://github.com/haidang9107/bidding/tree/main/client/src/main/java/org/example/client/dialog"
click node_client_socket "https://github.com/haidang9107/bidding/blob/main/client/src/main/java/org/example/client/network/SocketClient.java"
click node_client_listener "https://github.com/haidang9107/bidding/blob/main/client/src/main/java/org/example/client/network/ServerListener.java"
click node_shared_messages "https://github.com/haidang9107/bidding/tree/main/common/src/main/java/org/example/dto"
click node_shared_payload "https://github.com/haidang9107/bidding/tree/main/common/src/main/java/org/example/payload"
click node_socket_server "https://github.com/haidang9107/bidding/blob/main/server/src/main/java/org/example/server/network/SocketServer.java"
click node_command_handler "https://github.com/haidang9107/bidding/blob/main/server/src/main/java/org/example/server/network/CommandHandler.java"
click node_auction_service "https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/service/auction"
click node_bid_service "https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/service/bid"
click node_product_service "https://github.com/haidang9107/bidding/blob/main/server/src/main/java/org/example/server/service/product/ProductService.java"
click node_user_service "https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/service/user"
click node_finance_service "https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/service/finance"
click node_admin_service "https://github.com/haidang9107/bidding/blob/main/server/src/main/java/org/example/server/service/user/admin/AdminService.java"
click node_events "https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/event"
click node_broadcaster "https://github.com/haidang9107/bidding/blob/main/server/src/main/java/org/example/server/network/Broadcaster.java"
click node_repositories "https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/repository"
click node_mysql "https://github.com/haidang9107/bidding/blob/main/server/src/main/resources/MySQL/1schema.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_client_app,node_client_screens,node_client_auction,node_client_socket,node_client_listener,node_user toneBlue
class node_shared_messages,node_shared_payload toneAmber
class node_socket_server,node_command_handler,node_auction_service,node_bid_service,node_product_service,node_user_service,node_finance_service,node_admin_service toneMint
class node_events,node_broadcaster,node_repositories,node_mysql toneRose
```

## Components

### Client experience

- [JavaFX app](https://github.com/haidang9107/bidding/blob/main/client/src/main/java/org/example/client/ClientApp.java): `client/src/main/java/org/example/client/ClientApp.java`
- [User and admin screens](https://github.com/haidang9107/bidding/tree/main/client/src/main/java/org/example/client/controller): `client/src/main/java/org/example/client/controller`
- [Auction views](https://github.com/haidang9107/bidding/tree/main/client/src/main/java/org/example/client/dialog): `client/src/main/java/org/example/client/dialog`
- [Socket client](https://github.com/haidang9107/bidding/blob/main/client/src/main/java/org/example/client/network/SocketClient.java): `client/src/main/java/org/example/client/network/SocketClient.java`
- [Server listener](https://github.com/haidang9107/bidding/blob/main/client/src/main/java/org/example/client/network/ServerListener.java): `client/src/main/java/org/example/client/network/ServerListener.java`

### Shared protocol

- [Requests and responses](https://github.com/haidang9107/bidding/tree/main/common/src/main/java/org/example/dto): `common/src/main/java/org/example/dto`
- [Network payloads](https://github.com/haidang9107/bidding/tree/main/common/src/main/java/org/example/payload): `common/src/main/java/org/example/payload`

### Auction services

- [Socket server](https://github.com/haidang9107/bidding/blob/main/server/src/main/java/org/example/server/network/SocketServer.java): `server/src/main/java/org/example/server/network/SocketServer.java`
- [Command handler](https://github.com/haidang9107/bidding/blob/main/server/src/main/java/org/example/server/network/CommandHandler.java): `server/src/main/java/org/example/server/network/CommandHandler.java`
- [Auction lifecycle](https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/service/auction): `server/src/main/java/org/example/server/service/auction`
- [Bidding and auto-bids](https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/service/bid): `server/src/main/java/org/example/server/service/bid`
- [Product listings](https://github.com/haidang9107/bidding/blob/main/server/src/main/java/org/example/server/service/product/ProductService.java): `server/src/main/java/org/example/server/service/product/ProductService.java`
- [Accounts and watchlists](https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/service/user): `server/src/main/java/org/example/server/service/user`
- [Finance and transfers](https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/service/finance): `server/src/main/java/org/example/server/service/finance`
- [Administration](https://github.com/haidang9107/bidding/blob/main/server/src/main/java/org/example/server/service/user/admin/AdminService.java): `server/src/main/java/org/example/server/service/user/admin/AdminService.java`

### Persistence and events

- [Live event notifications](https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/event): `server/src/main/java/org/example/server/event`
- [Socket broadcaster](https://github.com/haidang9107/bidding/blob/main/server/src/main/java/org/example/server/network/Broadcaster.java): `server/src/main/java/org/example/server/network/Broadcaster.java`
- [Data access](https://github.com/haidang9107/bidding/tree/main/server/src/main/java/org/example/server/repository): `server/src/main/java/org/example/server/repository`
- [MySQL database](https://github.com/haidang9107/bidding/blob/main/server/src/main/resources/MySQL/1schema.sql): `server/src/main/resources/MySQL/1schema.sql`

### Other components

- **User**

## Connections

- User → JavaFX app: uses
- JavaFX app → User and admin screens: opens
- User and admin screens → Auction views: views
- User and admin screens → Socket client: sends requests
- Auction views → Socket client: sends requests
- Socket client → Requests and responses: encodes requests
- Requests and responses → Network payloads: carries payloads
- Socket client → Socket server: sends JSON over TCP
- Socket server → Socket client: returns responses
- Socket server → Requests and responses: exchanges messages
- Socket server → Socket broadcaster: broadcasts updates
- Socket broadcaster → Server listener: pushes updates
- Server listener → Auction views: updates views
- Auction lifecycle → Data access: persists auction state
- Bidding and auto-bids → Data access: persists bids
- Product listings → Data access: persists listings
- Accounts and watchlists → Data access: persists account data
- Finance and transfers → Data access: persists transactions
- Administration → Data access: accesses system data
- Data access → MySQL database: reads and writes
- Live event notifications → Socket broadcaster: dispatches notifications
