🏨 WEB ĐẶT PHÒNG KHÁCH SẠN & ĐẶT BÀN NHÀ HÀNG - CHẠY NGAY, ĐẦY ĐỦ NHƯ WEB THẬT
Bạn đang tìm một đồ án web ĐỦ LỚN để bảo vệ điểm cao, hoặc một nền tảng booking để phát triển thành sản phẩm riêng? Đây là source code web đặt phòng, đặt bàn theo mô hình SÀN NHIỀU ĐỐI TÁC giống Booking, Agoda: không chỉ có trang cho khách, mà có đủ 3 vai trò với 3 giao diện riêng.
⭐ VÌ SAO CODE NÀY KHÁC BIỆT?
Hầu hết code booking trên mạng chỉ có 1 admin quản lý tất cả. Code này làm đúng như thực tế:
- Chủ khách sạn, nhà hàng tự đăng ký làm ĐỐI TÁC, admin duyệt rồi mới được hoạt động
- Mỗi đối tác có khu quản lý riêng, chỉ thấy và sửa dữ liệu của chính mình
- Nền tảng tự tính HOA HỒNG và đối soát cho từng đối tác
- Giao diện admin và đối tác tách hẳn khỏi giao diện khách
👤 KHÁCH HÀNG
- Tìm kiếm, lọc theo giá, hạng sao, tiện nghi
- Xem phòng trống theo ngày, đặt phòng, đặt bàn
- Mã giảm giá, điểm thưởng, yêu thích, đánh giá
- Hàng chờ khi hết phòng, lịch sử đặt chỗ, in xác nhận
🤝 ĐỐI TÁC
- Quản lý khách sạn, loại phòng, nhà hàng, bàn ăn
- Giá theo mùa, khóa phòng, khuyến mãi riêng
- Lịch phòng, đơn hôm nay, trả lời đánh giá
- Báo cáo doanh thu, theo dõi hoa hồng
🛠️ QUẢN TRỊ NỀN TẢNG
- Duyệt đối tác và cơ sở mới, tạm ngưng khi cần
- Chỉnh tỷ lệ hoa hồng từng đối tác
- Đối soát, nhật ký thao tác, chat hỗ trợ, xuất CSV
🔒 KỸ THUẬT CHẮC CHẮN
- Chống đặt trùng phòng/bàn khi nhiều người đặt cùng lúc
- Thanh toán VNPay, MoMo, Stripe, VietQR (có chế độ mô phỏng để chạy thử ngay không cần khóa)
- Phân quyền kiểm tra ở phía server
- Có 24 unit test và file CI
💻 CÔNG NGHỆ HIỆN ĐẠI
Next.js 14, TypeScript, MySQL, Prisma, Tailwind CSS. Phù hợp để học, làm đồ án, làm portfolio xin việc hoặc mở rộng thành sản phẩm.
📦 BẠN NHẬN ĐƯỢC
- Toàn bộ source code, có comment
- Dữ liệu mẫu: 8 khách sạn, 8 nhà hàng, tài khoản demo cho 3 vai trò
- Hướng dẫn cài đặt từng bước
⚠️ LƯU Ý TRUNG THỰC
- Cổng thanh toán và đăng nhập Google/Facebook cần tự điền khóa API của bạn (chưa kiểm thử với khóa thật)
- Ảnh trong dữ liệu mẫu chỉ là ảnh minh họa
- Chưa có: Redis, upload ảnh lên cloud, tài khoản phụ cho đối tác, hoàn tiền qua cổng thanh toán
XEM THÊM ==> Hướng dẫn cài đặt chi tiết
HƯỚNG DẪN CÀI ĐẶT
HƯỚNG DẪN CÀI ĐẶT TỪNG BƯỚC (khoảng 10 phút)
BƯỚC 0: CÀI SẴN 2 THỨ (nếu máy chưa có)
- Node.js bản 18 trở lên: https://nodejs.org
- MySQL 8 (hoặc XAMPP/Laragon có MySQL). Nhớ mật khẩu root của MySQL.
BƯỚC 1: TẠO DATABASE
Mở MySQL (phpMyAdmin hoặc dòng lệnh) và chạy:
CREATE DATABASE stayly CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
BƯỚC 2: GIẢI NÉN VÀ CÀI THƯ VIỆN
Giải nén file zip, mở terminal trong thư mục dự án, chạy:
npm install
BƯỚC 3: TẠO FILE CẤU HÌNH
Copy file .env.example thành .env rồi mở .env sửa 2 dòng:
DATABASE_URL="mysql://root:MATKHAU@localhost:3306/stayly"
JWT_SECRET="gõ-một-chuỗi-ngẫu-nhiên-dài-trên-32-ký-tự"
(Thay MATKHAU bằng mật khẩu root MySQL của bạn. Nếu MySQL không có mật khẩu thì dùng mysql://root@localhost:3306/stayly)
BƯỚC 4: TẠO BẢNG VÀ NẠP DỮ LIỆU MẪU
npm run db:push
npm run db:seed
BƯỚC 5: CHẠY WEB
npm run dev
Mở trình duyệt vào: http://localhost:3000
TÀI KHOẢN ĐĂNG NHẬP THỬ
- Admin (vào /admin): admin@stayly.vn / Admin@123
- Đối tác (vào /partner): partner1@stayly.vn / Partner@123
- Khách hàng: user@stayly.vn / User@12345
GẶP LỖI THƯỜNG GẶP
- "Can't reach database server": MySQL chưa bật hoặc sai mật khẩu trong DATABASE_URL.
- "Unknown database": chưa làm Bước 1.
- Cổng 3000 đang bận: chạy npm run dev -- -p 3001 rồi vào http://localhost:3001.
- Muốn nạp lại dữ liệu mẫu từ đầu: chạy lại npm run db:push -- --force-reset rồi npm run db:seed.
CHẠY BẢN THẬT (tùy chọn)
npm run build
npm start
THANH TOÁN THẬT / ĐĂNG NHẬP GOOGLE: điền khóa API vào file .env theo các dòng có tên tương ứng trong .env.example. Nếu để trống, web dùng chế độ thanh toán mô phỏng để bạn chạy thử.
Nguồn: Topcode.vn