Học phần: Phát triển ứng dụng Web - Web Application Development
Giảng viên hướng dẫn: Thầy Ngô Ngọc Đăng Khoa, Thầy Trần Văn Quý
Một nền tảng đấu giá trực tuyến hoàn chỉnh với hệ thống quản lý admin, xác thực người dùng, quản lý sản phẩm và hệ thống bidding.
Online-Auction là một ứng dụng web cho phép người dùng:
- Đăng ký, đăng nhập và quản lý tài khoản
- Tham gia các phiên đấu giá sản phẩm
- Nâng cấp lên seller để bán sản phẩm
- Xem lịch sử đơn hàng và đánh giá
Admin có thể:
- Quản lý người dùng, nhân sự, danh mục sản phẩm
- Duyệt yêu cầu nâng cấp seller
- Quản lý cấu hình hệ thống
- Xem báo cáo thống kê
Lớp: 23KTPM03
Thành viên nhóm:
- Lê Phú Cường - 23127161
- Thái Minh Huy - 23127379
- ✅ Đăng ký tài khoản với xác minh email (OTP)
- ✅ Đăng nhập an toàn với mã hóa bcrypt
- ✅ Kiểm tra email trùng lặp (server-side validation)
- ✅ Validation mật khẩu mạnh (uppercase + ký tự đặc biệt)
- ✅ Xóa mềm (soft delete) và khôi phục người dùng
- ✅ Quản lý thông tin cá nhân
- ✅ Hệ thống đánh giá (positive/negative ratings)
- ✅ Session-based authentication
- ✅ reCAPTCHA v3 cho đăng ký
- ✅ Đặt lại mật khẩu với OTP verification
- ✅ Kiểm tra is_active để chống người dùng bị xóa đăng nhập
- ✅ Quản lý quyền truy cập theo vai trò (Admin, Seller, Bidder)
- ✅ Quản lý nhân sự admin (create, edit, soft delete, restore)
- ✅ Quản lý người dùng (view, edit, soft delete, restore)
- ✅ Quản lý sản phẩm (create, edit, soft delete, restore)
- ✅ Quản lý danh mục (create, edit, soft delete, restore)
- ✅ Duyệt/Từ chối yêu cầu nâng cấp seller
- ✅ Quản lý hồ sơ & cấu hình admin
- ✅ Thống kê doanh thu (Chart.js)
- ✅ Tạo/Sửa/Xóa sản phẩm
- ✅ Phân loại sản phẩm theo danh mục
- ✅ Upload ảnh sản phẩm (FilePond)
- ✅ Tính năng is_allow_newbidder (kiểm soát người bidder mới)
- ✅ Hệ thống đấu giá (bidding system)
- ✅ Lịch sử thắng giá
- ✅ Validation phía client với SweetAlert2
- ✅ Validation phía server
- ✅ JustValidate library cho form validation toàn diện
- ✅ Collect all errors và hiển thị 1 lần
- ✅ AJAX form submission (không reload trang)
- ✅ Loading animation trong lúc submit
- Node.js >= v14
- PostgreSQL >= v12
- npm hoặc yarn
- Clone hoặc tải xuống repository
- Cài đặt các dependencies cần thiết:
npm install
- Cấu hình database:
- Sửa file
config/db.config.jsvới thông tin PostgreSQL của bạn
- Sửa file
- Tạo database và tables:
- Chạy các script trong thư mục
scripts/
- Chạy các script trong thư mục
- Khởi động PostgreSQL
- Chạy server:
npm start
- Mở trình duyệt và truy cập:
http://localhost:3000
| Công Nghệ | Mô Tả |
|---|---|
| Backend | Node.js, Express.js |
| Database | PostgreSQL, Knex.js (Query Builder) |
| Frontend | Handlebars (HBS), Bootstrap, jQuery |
| Authentication | bcryptjs, Session |
| Validation | JustValidate |
| Security | reCAPTCHA v3 |
| UI Libraries | SweetAlert2, Notyf, FilePond, TinyMCE |
| Charts | Chart.js |
| Nodemailer |
Online-Auction/
├── config/ # Cấu hình (database, mail, admin)
├── controllers/ # Logic xử lý request
│ ├── admin/ # Admin controllers
│ └── client/ # Client controllers
├── models/ # Database models
├── routes/ # API routes
│ ├── admin/ # Admin routes
│ └── client/ # Client routes
├── views/ # Handlebars templates
│ ├── admin/ # Admin pages
│ └── client/ # Client pages
├── public/ # Static files
│ ├── admin/assets/ # Admin CSS/JS
│ └── assets/ # Client CSS/JS
├── middlewares/ # Custom middlewares
├── helpers/ # Helper functions (OTP, pagination, etc)
├── jobs/ # Scheduled tasks (auction jobs)
├── validates/ # Form validation rules
└── scripts/ # Database initialization scripts
- Thay vì xóa dữ liệu, đặt
is_active = false - Quản lý trang riêng để xem & khôi phục dữ liệu đã xóa
- Áp dụng cho Users, Products, Categories, Admin Staff
- Client-side: Kiểm tra trước khi submit
- Server-side: Kiểm tra lại để an toàn
- Collect all errors: Hiển thị tất cả lỗi 1 lần (không popup liên tiếp)
- AJAX Response: Trả JSON thay vì redirect để tránh lộ URL
- Gửi OTP qua email khi đăng ký
- Xác minh OTP trước khi kích hoạt tài khoản
- Hỗ trợ resend OTP với cooldown
- Kiểm tra email trùng lặp khi submit signup (server-side validation)
- Bidding notification
Nếu chương trình chạy thành công, người dùng sẽ thấy
- Trang chủ (Home Page): Hiển thị danh sách sản phẩm đang được đấu giá
- Đăng ký/Đăng nhập: Form validation toàn diện với AJAX submission
- Tài khoản người dùng: Xem thông tin cá nhân, lịch sử đơn hàng, đánh giá
- Admin Dashboard:
- Quản lý người dùng (view, edit, delete/restore)
- Quản lý sản phẩm (create, edit, delete/restore)
- Quản lý danh mục (create, edit, delete/restore)
- Quản lý nhân sự admin (create, edit, delete/restore)
- Hệ thống đấu giá: Bid lên sản phẩm, xem lịch sử thắng giá
Project này được tạo cho mục đích học tập trong học phần Phát triển ứng dụng Web - Web Application Development.