LuxeStay is a comprehensive, full-stack Hotel Room Reservation Management System designed to automate the hotel reservation process. It allows customers to easily browse and reserve rooms online, while empowering hotel staff (Admins and Receptionists) to seamlessly manage rooms, customers, bookings, check-ins, payments, and generate insightful reports.
This project was built to completely fulfill the System Requirements Specification (SRS) for a standard modern hotel reservation platform.
- Dashboard Overview: View top-level hotel analytics.
- User Management: Create, edit, and remove system users (Receptionists, other Admins, or Customers).
- Room Management: Add, update, and delete rooms. Set room prices, status (Available, Occupied, Maintenance), and upload room images directly.
- Reports: Generate daily/monthly reservation reports, revenue reports, and occupancy statistics.
- Check-In / Check-Out: Verify reservations, check guests into their assigned rooms, process check-outs, generate final bills, and record payment methods (Cash/Card/Online).
- Customer Management: View, search, add, edit, and delete customer profiles directly from the desk.
- Reservation Management: Create reservations for walk-in guests or callers, modify bookings, and handle cancellations.
- Browse & Book: Search available rooms for specific dates, view room details, and book securely.
- My Bookings: View past and upcoming reservations, and cancel pending/confirmed bookings.
- Profile Management: Update personal information and change passwords securely.
Frontend:
- React (Vite)
- React Router DOM
- Context API (for State/Auth Management)
- CSS (Vanilla, highly customized for a premium UI)
- Lucide React (Icons)
- React Hot Toast (Notifications)
Backend:
- Node.js & Express.js
- MySQL (with
mysql2/promise) - JSON Web Tokens (JWT) for authentication
- bcryptjs for password hashing
- Multer (for handling room image uploads)
Hotel-Reservation-System/
│
├── backend/ # Node.js Express Server
│ ├── config/ # Database connection
│ ├── middleware/ # Auth and Role guards
│ ├── public/uploads/ # Uploaded room images
│ ├── routes/ # Express API routes
│ ├── database.sql # SQL Schema & Seed Data
│ └── server.js # Entry point
│
└── frontend/ # React Application
├── public/
├── src/
│ ├── api/ # Axios instance configuration
│ ├── components/ # Reusable UI components (Sidebar, Layout, UI Elements)
│ ├── context/ # Auth context
│ ├── pages/ # Page Views (Admin, Reception, Customer, Auth)
│ ├── App.jsx # App Routing
│ └── index.css # Global Styles & Design System
└── vite.config.js
- Node.js (v16+)
- MySQL Server
- Open your MySQL client.
- Run the SQL script located at
backend/database.sql. This will create the databasehotel_reservation, setup all necessary tables, and insert seed data (including initial admin/reception accounts and sample rooms).
- Navigate to the backend directory:
cd backend - Install dependencies:
npm install
- Create a
.envfile in thebackenddirectory (if not present) with the following structure:PORT=3001 DB_HOST=localhost DB_USER=root DB_PASSWORD=your_mysql_password DB_NAME=hotel_reservation JWT_SECRET=your_super_secret_jwt_key JWT_EXPIRES_IN=7d
- Start the backend server:
npm run dev
- Open a new terminal and navigate to the frontend directory:
cd frontend - Install dependencies:
npm install
- Start the Vite development server:
npm run dev
The database.sql script creates a few default accounts to help you get started:
- Admin Account:
- Username:
admin - Password:
admin
- Username:
- Reception Account:
- Username:
user1 - Password:
user1
- Username:
You can use these credentials to log in immediately after setup. Customer accounts can be created from the Registration page.
This system was built to adhere directly to all Functional and Non-Functional requirements specified, including prevention of double booking, secure password encryption, role-based access, and all specified user, room, and reservation management modules.