Đồ án tốt nghiệp — Cá nhân
SangGarden
Nền tảng e-commerce fullstack bán cây cảnh — tự xây dựng và triển khai production trên VPS
Spring Boot + Angular + MariaDB. Không chỉ là code demo — hệ thống thực tế có thanh toán VNPay, phân quyền JWT, vận hành qua Nginx + SSL trên Ubuntu VPS.

Điểm nổi bật
Vấn đề & Mục tiêu
Các cửa hàng cây cảnh vừa và nhỏ chủ yếu bán offline, khó quản lý sản phẩm, tồn kho và đơn hàng khi quy mô tăng. Thao tác thủ công tốn thời gian và dễ sai sót. Khách hàng ngày càng kỳ vọng trải nghiệm online mượt mà, catalog chi tiết, thanh toán tiện lợi.
Chuyển đổi sang Next.js
Mặc dù phiên bản Spring Boot + Angular hoạt động tốt và có kiến trúc enterprise, nhưng việc dùng bộ công nghệ này cho một website e-commerce quy mô nhỏ là không hợp lý và tốn kém chi phí bảo trì. Việc triển khai (deploy) trên VPS tự quản lý cũng phức tạp hơn mức cần thiết. Do đó, dự án đã được chuyển sang phiên bản Next.js để dễ dàng deploy (Vercel) và tối ưu hơn.
Công nghệ
- Spring Boot — layered architecture, embedded server
- Spring Data JPA + Hibernate — ORM, JPQL, transactions
- Spring Security — filter chain, BCrypt password
- JWT — access + refresh token, ADMIN/USER authorization
@ControllerAdvice— centralized exception handling- Maven — build & dependency management
- RESTful API — stateless, JSON, resource-based
- Angular + TypeScript — SPA, module-based
- RxJS — Observable, BehaviorSubject
- Reactive Forms — validation, custom validators
- Angular Router — lazy loading, route guards
- Responsive — Flexbox/Grid
- MariaDB — normalized ERD, FK, indexing
- VNPay — payment request, callback, verify
- Email xác thực đơn hàng tự động
- Ubuntu VPS — self-hosted
- Nginx — reverse proxy + static server
- Certbot — SSL/HTTPS (Let's Encrypt)
- UFW Firewall
nohup— backend bind 127.0.0.1application-prod.properties
Kiến trúc hệ thống
Mô hình 3 tầng, client-server, giao tiếp qua RESTful API. Backend chỉ bind 127.0.0.1 — không expose trực tiếp, mọi request đi qua Nginx.
Thiết kế Database
| Bảng | Vai trò |
|---|---|
users | Tài khoản, role (ADMIN/USER), email verification, password mã hóa |
user_infos | Thông tin cá nhân (họ tên, SĐT, địa chỉ giao hàng) |
products | Sản phẩm — tên, slug SEO, giá, ảnh, trạng thái, liên kết category |
categories | Danh mục sản phẩm |
carts / cart_items | Giỏ hàng và items (số lượng, giá, trạng thái chọn) |
orders | Đơn hàng — hỗ trợ guest checkout, địa chỉ, phí ship, trạng thái, mã VNPay |
order_items | Chi tiết đơn — lưu snapshot tên/giá tại thời điểm mua |
Đáng chú ý: Hỗ trợ guest checkout và lưu snapshot giá tại thời điểm đặt — tránh sai lệch khi giá thay đổi sau này.
Tính năng chính
- Trang login/register hợp nhất, chuyển mode động không reload trang
- JWT access + refresh token, ADMIN/USER dùng chung một luồng login
- Email verification cho tài khoản mới
- Trang chủ hero slider, danh mục sản phẩm
- Danh sách & chi tiết sản phẩm, URL SEO-friendly (slug)
- Giỏ hàng real-time với RxJS BehaviorSubject
- Guest checkout — đặt hàng không cần tài khoản
- Giỏ hàng guest tự động merge lên server khi đăng nhập
- Checkout mượt mà, nhập địa chỉ giao hàng
- VNPay: tạo request, xử lý callback, verify, cập nhật trạng thái
- Gửi email xác nhận đơn hàng tự động
- Trang theo dõi đơn hàng của tôi
- CRUD sản phẩm, thêm ảnh, gán danh mục
- Quản lý danh mục sản phẩm
- Quản lý đơn hàng, cập nhật trạng thái
- Route /admin/* bảo vệ bằng route guard
Bảo mật & Production
Điểm khác biệt không chỉ là viết code — mà là tư duy vận hành thật trên production.
JWTStateless — access + refresh token, phân quyền theo roleSpring SecurityCấu hình filter chain, mã hóa BCryptHTTPS / SSLToàn bộ traffic qua SSL — Certbot (Let's Encrypt)Nginx proxyBackend chỉ bind 127.0.0.1 — không expose trực tiếpUFW FirewallTường lửa cấp production trên VPSConfig separationapplication-prod.properties — tách dev/production@ControllerAdviceXử lý lỗi tập trung — không lộ thông tin ra clientHình ảnh







Hướng phát triển
- Tìm kiếm/lọc nâng cao, gợi ý sản phẩm, wishlist, đánh giá sản phẩm
- Đa dạng thanh toán — COD, ví điện tử, cổng quốc tế
- Caching, load balancing, tối ưu DB, migrate cloud
- Multi-factor auth, refresh token rotation, mã hóa nâng cao
- Admin analytics — thống kê doanh thu, dự báo tồn kho
- Mobile app hoặc PWA