Sneaker Hub là nền tảng thương mại điện tử chuyên cung cấp giày thể thao, thiết kế với phong cách Dark Mode hiện đại. Dự án được triển khai theo mô hình MVC chặt chẽ.
- Ngôn ngữ: Java 17
- Framework Chính: Spring Boot 3.x, Spring Data JPA, Hibernate, Spring Security.
- Frontend: Thymeleaf, HTML5, CSS3 nguyên bản (Hạn chế tối đa JavaScript ngoài các tương tác thiết yếu).
- Cơ sở dữ liệu: MySQL 8.x
- Khác: OpenHTMLToPDF (Xuất hóa đơn PDF), Bean Validation.
controller/: Tiếp nhận Request, điều hướng luồng xử lý phân tách rõ ràng giữa Khách hàng (Customer) và Quản trị viên (Admin).service/: Chứa Business Logic (xử lý giỏ hàng DB, tính toán tổng tiền, xử lý upload/URL ảnh, tự động tạo biến thể sản phẩm).repository/: Giao tiếp với MySQL thông qua Spring Data JPA.entity/: Mapping trực tiếp với Database (User, Product, Order, ProductImage, ProductVariant, v.v.).dto/: Đối tượng chuyển giao dữ liệu (Data Transfer Object) cho Form nhập liệu.config/: Cấu hình Security phân quyền, Routing.
- Xem thông tin sản phẩm và theo dõi hình ảnh (Thumbnail trượt).
- Chọn biến thể (Màu sắc, kích cỡ).
- Giỏ hàng lưu trữ DB, tự động cập nhật tổng tiền bằng Checkbox.
- Thanh toán, quản lý đơn hàng hóa đơn và Xuất hóa đơn PDF.
- Quản lý và cập nhật thông tin Profile.
- Dashboard: Thống kê lượng sản phẩm, đơn hàng, khách hàng.
- Quản lý Sản phẩm (CRUD):
- Tạo mới với Upload trực tiếp ảnh máy chủ hoặc dùng Link (URL).
- Gen tự động Biến thể (SKU, Size, Color, Stock) với 1 cú click.
- Quick Add: Thêm cực nhanh Danh mục, Size, Màu sắc thông qua Modal.
- Cập nhật linh hoạt Trạng thái giao hàng của Đơn hàng (Pending, Shipped, etc.).
- Quản lý thông tin tài khoản Admin.
- Database: Tạo DB
btlweb1và import scriptshoes_shop_mysql_ltw.sql. (Nhớ cập nhật thông tin Root Password MySQL của máy bạn trong filesrc/main/resources/application.properties). - Khởi chạy: Mở project trong IntelliJ IDEA, chạy trực tiếp hoặc dùng lệnh lệnh Terminal
./mvnw spring-boot:run. - Truy cập:
http://localhost:8080- TK Customer:
staff/123456 - TK Admin:
admin/admin123
- TK Customer: