khomanguon
Server Game

Chia sẻ Mã nguồn Website Thương Mại Điện Tử Full Stack - Kiến trúc Microservices (Spring Boot + React)

KKang·15/08/2026·121 lượt xem
Chia sẻ Mã nguồn Website Thương Mại Điện Tử Full Stack - Kiến trúc Microservices (Spring Boot + React)

Thông tin cơ bản

Giới thiệu chung

Chia sẻ tới mọi người mã nguồn đầy đủ một website thương mại điện tử (kiểu Shopee/Tiki thu nhỏ), đặt tên Hyyang - đồ án tốt nghiệp được xây dựng theo đúng kiến trúc microservices thật sự thay vì kiểu monolithic thường thấy ở các đồ án web bán hàng: 8 service Spring Boot độc lập, đăng ký qua Eureka, expose ra ngoài qua Spring Cloud Gateway, giao tiếp bất đồng bộ qua Kafka, dữ liệu chia theo từng service.

Gói chia sẻ gồm đầy đủ:

  • Toàn bộ source code 8 service backend (Java 17 + Spring Boot 3/Spring Cloud) và frontend (ReactJS).

  • Script SQL khởi tạo database (3 schema MySQL, kèm sẵn dữ liệu mẫu + tài khoản demo để chạy thử ngay).

  • File thuyết trình (.pptx) dùng để báo cáo bảo vệ đồ án - trình bày kiến trúc, demo, hướng phát triển.

  • docker-compose.yml để dựng toàn bộ hệ thống (backend + database + frontend) chỉ bằng 1 lệnh duy nhất, không cần cài Java/Node/MySQL/MongoDB thủ công.

  • README hướng dẫn chi tiết, kèm Swagger UI cho từng service để tự khám phá API.

Demo giao diện

Kiến trúc hệ thống

  • Tất cả service đăng ký với Eureka discovery-server (:8761) để tự tìm nhau.

  • Spring Cloud Gateway (:8020) đóng vai trò cổng vào chung, route theo path về đúng service.

  • Apache Kafka dùng cho luồng thông báo bất đồng bộ (yêu cầu đăng ký seller).

  • Mỗi service sở hữu database riêng (database per service) - đúng chuẩn microservices, không share schema.

Hệ thống schema / database

Service

Port

Database engine

Schema/DB

Bảng chính

user-service

8080

MySQL 8

user_service

accounts, roles, customers, seller, otps, rates

product-service

8083

MySQL 8

product_service

products, types_of_product, categories, suppliers, rates, image_classifications

order-service

8085

MySQL 8

order_service

orders, order_lines, items, address, vouchers, warehouses, shippers, shipping_methods

file-service

8081

MongoDB 7

FileService

Metadata file/ảnh upload (product, seller, mô tả sản phẩm...)

chat-service

8086

MongoDB 7

ChatService

Tin nhắn chat real-time giữa khách hàng và người bán

image_service

8082

MongoDB 7

ImageEcommerce

Service dự phòng, chưa được gateway/frontend sử dụng

Chức năng chi tiết

Dành cho khách hàng

  • Đăng ký/đăng nhập bằng JWT, xác thực OTP qua email.

  • Trang chủ gợi ý sản phẩm, lọc theo danh mục/khoảng giá/số sao đánh giá, sắp xếp phổ biến - mới nhất - bán chạy.

  • Trang chi tiết sản phẩm: chọn phân loại (màu/size), xem đánh giá, thêm giỏ hàng hoặc mua ngay.

  • Giỏ hàng, áp mã voucher, xác nhận đơn hàng, chọn địa chỉ giao hàng, chọn phương thức vận chuyển.

  • Quản lý tài khoản cá nhân, sổ địa chỉ.

  • Chat real-time (WebSocket/STOMP) trực tiếp với người bán.

  • Trung tâm thông báo.

Dành cho người bán (Seller)

  • Đăng ký trở thành seller (kèm ảnh CCCD, chờ admin duyệt).

  • Quản lý sản phẩm: thêm/sửa/xoá, upload ảnh + mô tả rich text, quản lý phân loại/tồn kho.

  • Dashboard doanh thu: biểu đồ doanh thu theo ca/khoảng ngày, tổng khách hàng, tổng sản phẩm, tổng đơn hàng, cảnh báo sắp hết hàng.

  • Quản lý đơn hàng của shop.

Dành cho đơn vị vận chuyển / Shipper

  • Quản lý kho hàng, gán shipper theo kho.

  • Xử lý đơn giao hàng theo trạng thái.

Dành cho quản trị viên (Admin)

  • Duyệt/từ chối yêu cầu đăng ký seller.

  • Xem chi tiết thông tin từng seller, quản lý toàn hệ thống.

Tài khoản demo có sẵn

Chạy xong là có thể đăng nhập thử ngay, không cần tự đăng ký:

Username

Mật khẩu

Vai trò

Ghi chú

demo_admin

Demo@123

ROLE_ADMIN

Toàn quyền quản trị hệ thống

demo_seller

Demo@123

ROLE_SELLER

Có sẵn "Demo Shop" + 3 sản phẩm mẫu (ảnh thật)

demo_customer

Demo@123

ROLE_USER

Tài khoản khách hàng để test mua hàng/giỏ hàng/chat

Công nghệ sử dụng

Backend

  • Java 17, Spring Boot 3.3/3.4, Spring Cloud (Gateway, Eureka, Config Client)

  • Spring Data JPA + MySQL 8, Spring Data MongoDB + MongoDB 7

  • Spring Security + JWT, Spring Kafka, Spring Mail (OTP)

  • springdoc-openapi (Swagger UI cho từng service)

Frontend

  • ReactJS 18, React Router, Ant Design, Axios, Chart.js

  • STOMP/SockJS cho chat real-time

Hạ tầng

  • Docker & Docker Compose - dựng toàn bộ 12 container (7 service Java + frontend + MySQL + MongoDB + Kafka + Eureka) chỉ bằng docker compose up --build.

Chạy thử chỉ với 1 lệnh

Không cần cài Java, Node, MySQL hay MongoDB - chỉ cần Docker:

docker compose up --build

Lệnh này tự build toàn bộ image, dựng MySQL/MongoDB/Kafka, và tự động import sẵn schema + dữ liệu mẫu (bao gồm 3 tài khoản demo ở bảng trên). Chi tiết đầy đủ nằm trong README của source.

Sau khi container chạy xong, vào http://localhost:3000 là dùng được ngay, mỗi service còn có sẵn Swagger UI riêng để xem/test toàn bộ API (http://localhost:<port>/swagger-ui.html).

Nội dung tải về

  • Full source code (backend x8 service + frontend)

  • Script SQL (schema + dữ liệu mẫu)

  • File PowerPoint thuyết trình bảo vệ đồ án

  • docker-compose.yml + README hướng dẫn cài đặt/chạy chi tiết

Lời kết

Source đã dockerize sẵn nên chỉ cần Docker là chạy được ngay, không lo lỗi môi trường - phù hợp cho bạn nào muốn tham khảo cách triển khai Spring Cloud/Eureka/Gateway/Kafka/Docker qua một ví dụ thực tế thay vì chỉ đọc lý thuyết.

Có thắc mắc gì về source hoặc cần hỗ trợ cài đặt, liên hệ qua email: nhut.nguyenminh.it@gmail.com.