This project is a comprehensive Hotel Booking Management System designed to streamline hotel operations, including room and customer management, booking creation and cancellation, and administrative oversight. It provides a robust and user-friendly platform to manage hotel operations effectively.
- Add, update, and delete room information, including room types, rates, and availability.
- View detailed room statuses, such as occupancy and maintenance schedules.
- Maintain customer records with personal details and booking history.
- Secure customer authentication and authorization mechanisms.
- Send automated notifications for booking confirmations and updates.
- Create, modify, and cancel bookings seamlessly.
- Check real-time room availability.
- Support for individual and group bookings.
- Access centralized control for managing all hotel operations.
- Generate insightful analytics reports on bookings, revenue, and customer demographics.
- Manage user roles and permissions (Admin, Staff, Customer).
- Encrypted user passwords using industry-standard algorithms.
- Role-based access control (RBAC) for sensitive operations.
- Regular security audits for database and APIs.
- Node.js: For server-side logic and API management.
- Express.js: For building robust RESTful APIs.
- Sequelize ORM: For database interaction and migrations.
- MySQL: As the primary relational database.
- React.js: For building an interactive user interface.
- Redux: For state management.
- Tailwind CSS: For responsive and modern UI design.
- Docker: For containerizing the application and managing environments.
- Postman: For API testing.
- Jest: For unit and integration testing.
- Node.js (v14 or higher)
- MySQL (v8.0 or higher)
- Docker (optional but recommended for deployment)
git clone https://github.com/FOT-Group-Project/Hotel-Booking-Management-System.git
cd Hotel-Booking-Management-System- Navigate to the backend directory:
cd backend - Install dependencies:
npm install
- Configure the database connection in the
.envfile:DB_HOST=your_database_host DB_USER=your_database_user DB_PASS=your_database_password DB_NAME=your_database_name JWT_SECRET=your_jwt_secret
- Run database migrations:
npx sequelize db:migrate
- Start the backend server:
npm start
- Navigate to the frontend directory:
cd ../frontend - Install dependencies:
npm install
- Start the frontend development server:
npm start
- Open your browser and navigate to
http://localhost:3000to access the application.
The system uses a MySQL database with the following main tables:
- Users: Stores user details, roles, and authentication data.
- Rooms: Contains information about room types, rates, and availability.
- Bookings: Tracks all booking transactions, including status and timestamps.
- Payments: Manages payment records, including amounts and payment methods.
We welcome contributions to enhance the functionality of this system. Please follow these steps:
- Fork the Repository:
- Click the "Fork" button at the top right corner of this page.
- Clone Your Fork:
git clone https://github.com/your-username/Hotel-Booking-Management-System.git cd Hotel-Booking-Management-System - Create a Branch:
git checkout -b feature-name
- Make Your Changes:
- Implement your feature or fix bugs.
- Commit and Push:
git add . git commit -m "Description of your changes" git push origin feature-name
- Submit a Pull Request:
- Go to the original repository and click "New Pull Request".
- Build the Docker images:
docker-compose build
- Start the containers:
docker-compose up
- Access the application on
http://localhost.
- Follow the backend and frontend setup steps on the server environment.
- Use a process manager like PM2 for the backend.
- Use a production-ready frontend build (
npm run build) for deployment.
This project is licensed under the MIT License. See the LICENSE file for details.
For any inquiries or support, please contact the project maintainers through the repository's GitHub page.
This README provides a detailed overview of the Hotel Booking Management System, including setup instructions, key features, and contributing guidelines. For additional details, refer to the documentation in the repository.