bigbid-server — Backend REST API viết bằng Spring Boot, xử lý nghiệp vụ đấu giá, xác thực, giao dịch ngân hàng và cập nhật thời gian thực qua WebSocket (STOMP) giá các phiên.
bigbid-client — Ứng dụng JavaFX, cung cấp giao diện đồ họa cho: Bidder , Seller và Admin .
Phạm vi hệ thống:
Người dùng đăng ký tài khoản, nạp tiền vào ví, tham gia các phiên đấu giá và đặt giá cạnh tranh.
Seller tạo và quản lý phiên đấu giá.
Admin duyệt giao dịch nạp rút tiền, quản lý người dùng và giám sát hệ thống.
Giá thầu được cập nhật theo realtime cho tất cả người dùng đang xem phiên qua WebSocket.
Sau khi phiên kết thúc, người thắng thầu tiến hành thanh toán trực tiếp trong ứng dụng.
Thành phần
Chi tiết
Ngôn ngữ
Java 25
Framework
Spring Boot 4.0.5
Bảo mật
Spring Security + OAuth2 Resource Server (JWT)
ORM
Spring Data JPA + Hibernate
WebSocket
Spring WebSocket + STOMP
Database
MySQL 8.4
Mapping
MapStruct 1.6.3
Boilerplate
Lombok 1.18+
Test
JUnit 5, Spring Boot Test, H2 (in-memory)
Linting
Spotless + Google Java Format
Build
Maven
Thành phần
Chi tiết
Ngôn ngữ
Java 25
UI Framework
JavaFX 25 + FXML
HTTP Client
Java built-in HttpClient
JSON
Jackson 2.21.3
WebSocket
Java-WebSocket 1.5.6 (STOMP)
Mapping
MapStruct 1.6.3
Boilerplate
Lombok 1.18+
Logging
SLF4J + Logback
Build
Maven
Thành phần
Chi tiết
Database
MySQL 8.4 (chạy qua Docker)
Container
Docker + Docker Compose
bigbid/
├── docker-compose.yml # Khởi động MySQL database
│
├── bigbid-server/ # Backend Spring Boot
│ ├── src/main/java/com/bigbid/server/
│ │ ├── ServerApplication.java
│ │ ├── configuration/ # Security, JWT, WebSocket, app initializer,...
│ │ ├── controller/ # REST API endpoints
│ │ ├── service/ # Business logic handlers
│ │ ├── entity/ # JPA entities
│ │ ├── dto/ # Request / Response DTOs
│ │ ├── repository/ # Spring Data JPA repositories
│ │ ├── mapper/ # MapStruct mappers
│ │ ├── enums/ # AuctionStatus, BidTransactionStatus, ...
│ │ └── exception/ # GlobalExceptionHandler, ErrorCode
│ ├── src/main/resources/
│ │ ├── application-dev.yaml.example
│ │ └── application-prod.yaml.example
│ └── pom.xml
│
└── bigbid-client/ # Frontend JavaFX
├── src/main/java/com/bigbid/client/
│ ├── ClientApplication.java
│ ├── JavaFxApp.java
│ ├── controller/ # FXML controllers (Home, Login, AuctionDetail, ...)
│ ├── service/ # AuthService, AuctionService, BankService, ...
│ ├── network/
│ │ ├── ApiClient.java # HTTP REST client
│ │ └── WebSocketClient.java
│ ├── model/
│ │ ├── request/
│ │ └── response/
│ └── util/ # SceneManager, UserSession, AuthGuard, ...
├── src/main/resources/
│ ├── fxml/ # File giao diện FXML
│ ├── style/ # CSS
│ ├── static/icon/ # Logo, icon danh mục
│ └── i18n/
├── .mvn/jvm.config # JVM args cho JavaFX module system
└── pom.xml
Công cụ
Phiên bản tối thiểu
Java (JDK)
25
Docker
24+
Bước 2 — Khởi động MySQL bằng Docker
docker volume create db_data && docker run -d --name bigbid-db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=anhemf36 -e MYSQL_DATABASE=bigbid -v db_data:/var/lib/mysql --restart always mysql:8.4
docker volume create db_data; `
docker run -d --name bigbid-db `
-p 3306:3306 `
-e MYSQL_ROOT_PASSWORD=anhemf36 `
-e MYSQL_DATABASE=bigbid `
-v db_data:/var/lib/mysql `
--restart always `
mysql:8.4
Bước 3: Khởi động server và client
java -jar bigbid-server-1.0.0.jar
java -jar bigbid-client-1.0.0.jar
Công cụ
Phiên bản tối thiểu
Java (JDK)
25
Maven
3.9+
Docker
24+
Docker Compose
2.x
git clone https://github.com/Pumpkin-Nguyen/bigbid
cd bigbid
Bước 1 — Khởi động Database và copy file cấu hình server
Điền các config tại file docker-compose.yml
cp src/main/resources/application.yaml.example \
src/main/resources/application.yaml
copy src/main/resources/application.yaml.example `
src/main/resources/application.yaml
Bước 3 — Điền các config tại file application.yaml
./mvnw clean package -DskipTests
.\m vnw.cmd clean package -DskipTests
java -jar target/bigbid-server-1.0.0.jar
Open a new terminal and navigate to the bigbid-client
java -jar target/bigbid-client-1.0.0.jar
✅ Chức năng đã hoàn thành
🏠 Trang chủ & Xem đấu giá
🛒 Quản lý phiên đấu giá (Seller)