Skip to content

Pumpkin-Nguyen/bigbid

Repository files navigation

BigBid Logo

BigBid — Hệ thống Đấu giá Trực tuyến

Java Spring Boot JavaFX MySQL Maven Docker


📋 Mục lục


🏷️ Giới thiệu

  • 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, SellerAdmin.

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.

🛠️ Công nghệ sử dụng

Server

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

Client

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

Hạ tầng

Thành phần Chi tiết
Database MySQL 8.4 (chạy qua Docker)
Container Docker + Docker Compose

📁 Cấu trúc dự án

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

🚀 Release

Yêu cầu môi trường

Công cụ Phiên bản tối thiểu
Java (JDK) 25
Docker 24+

Bước 1 — Tải bản Release

Release

Bước 2 — Khởi động MySQL bằng Docker

MacOS / Linux

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

Window

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

🔨 Build từ mã nguồn

Yêu cầu môi trường

Công cụ Phiên bản tối thiểu
Java (JDK) 25
Maven 3.9+
Docker 24+
Docker Compose 2.x

Clone repository

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

docker compose up -d
cd bigbid-server

macOS / Linux

cp src/main/resources/application.yaml.example \
src/main/resources/application.yaml

Windows

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


Bước 4 — Build Server

macOS / Linux

./mvnw clean package -DskipTests

Windows

.\mvnw.cmd clean package -DskipTests

Run

java -jar target/bigbid-server-1.0.0.jar

Bước 5 — Build Client

Open a new terminal and navigate to the bigbid-client

mvn clean package
java -jar target/bigbid-client-1.0.0.jar

✅ Chức năng đã hoàn thành

🔐 Xác thực & Phân quyền

  • Đăng ký tài khoản mới
  • Đăng nhập / đăng xuất với JWT (access token + refresh token)
  • Phân quyền ba vai trò: Bidder, Seller, Admin
  • AuthGuard — tự động chuyển hướng khi chưa đăng nhập

🏠 Trang chủ & Xem đấu giá

  • Xem danh sách phiên đấu giá với phân trang
  • Lọc phiên theo danh mục, trạng thái
  • Xem chi tiết sản phẩm và lịch sử đặt giá của phiên

🔨 Đặt giá (Bidder)

  • Đặt giá trực tiếp trong phiên đấu giá
  • Validate giá thầu phía client (phải cao hơn giá hiện tại)
  • Cập nhật giá realtime qua WebSocket — giá mới hiển thị ngay, không cần refresh

🛒 Quản lý phiên đấu giá (Seller)

  • Tạo phiên đấu giá mới kèm thông tin sản phẩm và ảnh
  • Chỉnh sửa thông tin phiên (khi chưa bắt đầu)
  • Bắt đầu / huỷ phiên đấu giá
  • Upload ảnh sản phẩm
  • Xem danh sách phiên tại Selling Hub

📊 Dashboard cá nhân

  • Theo dõi các phiên đang tham gia
  • Lịch sử giao dịch đấu giá
  • Thanh toán phiên đấu giá sau khi thắng thầu

🏦 Hệ thống ngân hàng

  • Xem số dư ví
  • Nạp tiền vào ví (yêu cầu Admin duyệt)
  • Lịch sử giao dịch nạp tiền

🛡️ Quản trị viên (Admin)

  • Xem và quản lý danh sách người dùng
  • Khoá / mở khoá tài khoản người dùng
  • Duyệt hoặc từ chối giao dịch nạp tiền

⚙️ Cài đặt tài khoản

  • Cập nhật thông tin cá nhân
  • Đổi ảnh đại diện (avatar)

🤖 Hệ thống tự động

  • Scheduled job tự động đóng phiên đấu giá khi hết thời gian
  • Thông báo kết quả phiên qua WebSocket

📎 Báo cáo và Demo

BigBid

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors