GIỚI THIỆU
RedBus là hệ thống website quản lý và bán vé xe khách trực tuyến, phù hợp làm đồ án tốt nghiệp, đề tài web full-stack hoặc tham khảo xây dựng sản phẩm thực tế cho nhà xe vừa và nhỏ.
Hệ thống gồm 2 phần: giao diện khách hàng (đặt vé, thanh toán, quản lý vé) và khu quản trị (vận hành tuyến, chuyến, ghế, đơn đặt, báo cáo). Kiến trúc Client – Server, frontend và backend tách biệt, giao tiếp qua REST API.
CÔNG NGHỆ SỬ DỤNG
Backend
-
Java 17, Spring Boot 3.2
-
Spring Security + JWT (phân quyền)
-
MyBatis + MySQL 8
-
Tích hợp PayOS (thanh toán online)
-
Spring Mail (OTP, thông báo email)
-
Tác vụ nền: tự hủy vé quá hạn thanh toán
Frontend
-
React 19 + TypeScript
-
Vite, React Router, Axios
-
Recharts (biểu đồ báo cáo)
-
Leaflet (bản đồ lộ trình)
-
QR vé điện tử
CHỨC NĂNG KHÁCH HÀNG
-
Đăng ký, đăng nhập, quên mật khẩu (OTP email)
-
Tìm chuyến theo tuyến, ngày, loại xe, khoảng giá
-
Xem sơ đồ ghế realtime, chọn nhiều ghế
-
Nhập mã khuyến mãi, xem giá sau giảm trước khi đặt
-
Đặt vé (trạng thái chờ thanh toán, giữ ghế theo thời gian quy định)
-
Thanh toán tiền mặt hoặc PayOS (đơn lẻ / gộp nhiều vé)
-
Vé của tôi: xem, thanh toán, hủy vé
-
Vé điện tử / mã QR
-
Tra cứu vé công khai (mã vé + SĐT, không cần đăng nhập)
-
Đổi ghế, đổi chuyến (trước giờ khởi hành)
-
Hủy vé đã thanh toán + yêu cầu hoàn tiền (nhập STK ngân hàng)
-
Đánh giá chuyến sau khi đi
-
Hồ sơ cá nhân, lịch sử thanh toán
-
Thông báo, chat hỗ trợ
-
Xem tin tức / khuyến mãi
CHỨC NĂNG QUẢN TRỊ (ADMIN / STAFF)
-
Tổng quan hệ thống, báo cáo doanh thu (biểu đồ)
-
Quản lý tuyến đường, điểm dừng, loại xe, xe khách
-
Quản lý chuyến xe: thêm/sửa, gen lịch hàng loạt, phân trang danh sách
-
Quản lý ghế theo xe (trống / khóa / đã bán)
-
Danh sách đơn đã đặt (theo dõi vé toàn hệ thống)
-
Quản lý khách hàng
-
Quản lý khuyến mãi, tin tức
-
Xử lý yêu cầu hoàn tiền
-
Hỗ trợ chat khách hàng
-
Phân quyền: Admin (đầy đủ), Staff (vận hành, không xóa một số danh mục)
DỮ LIỆU MẪU (SEED)
-
Tài khoản sẵn khi chạy lần đầu:
-
Admin: admin / Admin@123
-
Staff: staff / Staff@123
-
Khách demo: khach1 … khach5
-
Có sẵn tuyến, xe, chuyến, khuyến mãi mẫu (VD: REDBUS10, TET2026)
YÊU CẦU CÀI ĐẶT
-
JDK 17+, Maven 3.8+
-
Node.js 18+, npm
-
MySQL 8.0+
-
(Tùy chọn) Tài khoản PayOS, Gmail App Password để dùng thanh toán online và gửi mail
Chạy nhanh:
-
Tạo database redbus, cấu hình application.yml
-
cd backend → mvn spring-boot:run → API: http://localhost:8080/api
-
cd frontend → npm install → npm run dev → Web: http://localhost:5173
BỘ SOURCE GỒM
-
Mã nguồn backend + frontend đầy đủ
-
File SQL schema tự tạo bảng khi khởi động
-
File cấu hình mẫu (.env, application-local.yml.example)
-
README hướng dẫn cài đặt
LƯU Ý
-
Mã nguồn dùng cho học tập, đồ án, tham khảo; người mua tự triển khai và cấu hình môi trường.
-
PayOS/Gmail cần tự đăng ký và điền key; có thể demo bằng thanh toán tiền mặt không cần PayOS.
-
Giao diện responsive, hỗ trợ tiếng Việt.
XEM THÊM ==> Hướng dẫn cài đặt chi tiết
Nguồn: Sharecode.vn
1. Yêu cầu
-
JDK 17 trở lên
-
Maven 3.8+
-
Node.js 18+ và npm
-
MySQL 8.0+
-
IDE: IntelliJ IDEA / VS Code (tùy chọn)
2. Cài đặt MySQL
-
Cài và khởi động MySQL Server.
-
Tạo database (hoặc để backend tự tạo khi chạy):
CREATE DATABASE redbus CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
Ghi nhớ: host, port (3306), user, password.
3. Cấu hình & chạy Backend
-
Giải nén source, mở thư mục backend.
-
Cấu hình database trong src/main/resources/application.yml:
url: jdbc:mysql://localhost:3306/redbus?useSSL=false&serverTimezone=Asia/Ho_Chi_Minh&characterEncoding=utf8
username: root # đổi theo máy bạn
password: 12345678 # đổi theo máy bạn
Hoặc dùng biến môi trường: DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD.
-
(Tùy chọn) PayOS + Gmail — sao chép file mẫu:
application-local.yml.example → application-local.yml
Điền client-id, api-key, checksum-key PayOS và Gmail App Password.
Không bắt buộc nếu chỉ demo bằng thanh toán tiền mặt.
-
Chạy backend:
Đợi log Started → API: http://localhost:8080/api
Lần chạy đầu: tự tạo bảng (schema.sql) và dữ liệu mẫu (tuyến, xe, chuyến, tài khoản demo).
4. Cấu hình & chạy Frontend
-
Mở terminal mới, vào thư mục frontend.
-
Cài package:
-
Tạo file .env (sao từ .env.example):
VITE_API_URL=http://localhost:8080/api
-
Chạy:
Truy cập: http://localhost:5173
5. Tài khoản demo
|
Vai trò |
Tài khoản |
Mật khẩu |
|
Quản trị
|
admin
|
Admin@123
|
|
Nhân viên
|
staff
|
Staff@123
|
|
Khách hàng
|
khach1 … khach5
|
(theo seed / đăng ký mới)
|
-
Quản trị: http://localhost:5173/quan-tri
-
Đặt vé: http://localhost:5173/dat-ve
6. Thứ tự chạy khi demo
-
Bật MySQL
-
Chạy backend (mvn spring-boot:run)
-
Chạy frontend (npm run dev)
-
Mở trình duyệt → http://localhost:5173
7. Lỗi thường gặp
|
Lỗi |
Cách xử lý |
|
Không kết nối MySQL
|
Kiểm tra MySQL đang chạy; đúng user/password trong application.yml
|
|
mvn không nhận lệnh
|
Cài Maven, thêm PATH; hoặc chạy bằng IntelliJ
|
|
Frontend không gọi được API
|
Backend phải chạy trước; kiểm tra VITE_API_URL=http://localhost:8080/api
|
|
Port 8080 / 5173 bị chiếm
|
Đổi port trong cấu hình hoặc tắt app đang dùng port
|
|
PayOS lỗi
|
Dùng Tiền mặt khi demo; hoặc cấu hình đủ key trong application-local.yml
|