Đây là hệ thống website quản lý khách sạn được xây dựng theo mô hình Client–Server, nhằm hỗ trợ các nghiệp vụ cốt lõi trong hoạt động vận hành khách sạn như quản lý phòng, đặt phòng, thanh toán và thống kê doanh thu.
- Xác thực và phân quyền theo vai trò (Quản lý / Lễ tân / Khách hàng), bảo mật bằng JWT
- Quản lý phòng: thêm, sửa, xóa, tìm kiếm; theo dõi trạng thái phòng theo thời gian thực
- Quản lý loại phòng: cấu hình giá, sức chứa, mô tả và hình ảnh
- Quản lý khách hàng: CRUD đầy đủ, tra cứu lịch sử lưu trú
- Đặt phòng: tạo / hủy đặt phòng, check-in / check-out, theo dõi trạng thái đơn
- Quản lý dịch vụ: thêm dịch vụ đi kèm, gắn dịch vụ vào booking
- Thanh toán và hóa đơn: xuất hóa đơn chi tiết, in PDF, hỗ trợ tiền mặt và chuyển khoản
- Báo cáo doanh thu: thống kê theo ngày / tháng / quý / năm, biểu đồ trực quan, xuất file
- Giao diện đặt phòng trực tuyến dành riêng cho khách hàng
| Thành phần | Công nghệ |
|---|---|
| Frontend | ReactJS, TypeScript, HTML/CSS, Vite |
| Backend | Node.js, ExpressJS |
| Xác thực | JWT (JSON Web Token) |
| Database | SQL Server 2022 |
| Triển khai DB | Docker Desktop |
| Quản lý DB | Azure Data Studio |
| Kiểm thử API | Postman |
| IDE | Visual Studio Code |
Dự án được xây dựng theo kiến trúc MVC 3 lớp:
- View (Frontend): Ứng dụng ReactJS + TypeScript hoạt động theo mô hình SPA, giao tiếp với backend thông qua RESTful API.
- Controller (Backend): Node.js + ExpressJS, tiếp nhận request, xử lý nghiệp vụ và trả kết quả về client.
- Model (Database): SQL Server 2022 chạy trong Docker, lưu trữ toàn bộ dữ liệu hệ thống.
- OS: Windows 10 trở lên hoặc macOS 12 trở lên
- Node.js: phiên bản 18 trở lên
- Docker Desktop: đã cài đặt và đang chạy
- Git
git clone https://github.com/<Merlokmac>/<Hotel-Management>.git
cd <Hotel-Management>docker run -d \
--name sqlserver \
-e "ACCEPT_EULA=Y" \
-e "SA_PASSWORD=YourStrong!Passw0rd" \
-p 1433:1433 \
mcr.microsoft.com/mssql/server:2022-latestSau đó mở Azure Data Studio và kết nối với thông tin:
- Server:
localhost - Username:
sa - Password:
YourStrong!Passw0rd
Chạy các file .sql trong thư mục database/ để tạo schema và dữ liệu mẫu.
cd Backend
npm install
npm startBackend chạy tại: http://localhost:8000
cd FrontEnd/hotel-management-frontend
npm install
npm run devFrontend chạy tại: http://localhost:3000
| Vai trò | Username | Password |
|---|---|---|
| Quản lý | admin |
12345678 |
| Lễ tân | letanA |
12345678 |
| Khách hàng | customer_online1 |
12345678 |
├── Backend/
│ ├── config/ # Cấu hình kết nối database
│ ├── controllers/ # Xử lý logic nghiệp vụ
│ ├── routes/ # Định nghĩa API endpoints
│ └── server.js
│
├── FrontEnd/
│ └── hotel-management-frontend/
│ ├── src/
│ │ ├── pages/ # Các trang giao diện chính
│ │ ├── components/ # Component tái sử dụng
│ │ ├── services/ # Gọi API
│ │ ├── hooks/ # Custom hooks
│ │ └── contexts/ # Quản lý trạng thái
│ └── package.json
│
└── database/
└── *.sql # Script tạo bảng và dữ liệu mẫu
Hệ thống gồm các bảng chính: Account, Role, Employee, Customer, RoomType, Room, Service, Booking, BookingService, Invoice, RevenueReport.
Đã thực hiện manual testing với 25 test cases bao phủ toàn bộ luồng nghiệp vụ chính, tất cả đều pass.
| Nhóm chức năng | Test case | Kết quả |
|---|---|---|
| Đăng nhập | TC01 – TC05 | Pass |
| Gửi OTP | TC06 – TC08 | Pass |
| Quản lý khách hàng | TC09 – TC13 | Pass |
| Quản lý phòng | TC14 – TC18 | Pass |
| Quản lý dịch vụ | TC19 – TC21 | Pass |
| Đặt phòng & Thanh toán | TC22 – TC25 | Pass |