A full-featured Hotel Management System built with Java following Object-Oriented Design principles. This system manages room bookings, guest check-ins/check-outs, housekeeping, billing, and automated notifications — designed as a microservices architecture.
The Hotel Management System is a digital platform that automates and streamlines the daily operations of a hotel. It replaces manual processes with an integrated, role-based system accessible by staff and guests.
- Room Management — Track and manage rooms by type, availability, and status in real time
- Booking Engine — Allow guests and receptionists to search available rooms and create reservations
- Check-in / Check-out — Streamline the arrival and departure process with automated key assignment and room status updates
- Housekeeping — Log and monitor the cleaning and maintenance status of every room
- Billing & Payments — Generate detailed invoices and accept multiple payment methods
- Notifications — Automatically alert guests on booking confirmations, cancellations, and check-in reminders
| Type | Description |
|---|---|
| Standard | Basic amenities, suitable for solo/couple |
| Deluxe | Enhanced furnishings and services |
| Family Suite | Spacious rooms for families |
| Business Suite | Premium suite with business amenities |
| Actor | Responsibilities |
|---|---|
| Guest | Search available rooms, make and cancel bookings, pay bills |
| Receptionist | Add/modify rooms, create bookings, check in and check out customers |
| Manager | Add new workers, view reports, oversee operations |
| Housekeeper | Add and update housekeeping records for assigned rooms |
| System | Send automated notifications for booking, cancellation, and check-in reminders |
- Guest or Receptionist searches for available rooms by date and type
- Available rooms are displayed with pricing
- Guest selects a room and confirms the booking
- System creates a booking record and sends a confirmation notification
- Guest arrives at the hotel
- Receptionist verifies the booking
- Receptionist assigns a room key
- Room status is updated to Occupied
- Guest requests checkout
- System generates invoice with all room charges
- Guest pays via Credit Card, Check, or Cash
- Room status is updated to Available
- Housekeeping is notified for room preparation
- Guest or Receptionist initiates cancellation
- System updates booking status to Cancelled
- Room is released back to available inventory
- Cancellation notification is sent to guest
- Housekeeper receives room assignment
- Housekeeper performs cleaning/maintenance
- Housekeeper logs the task in the system
- Room status is updated accordingly
- Credit Card
- Check
- Cash
The system sends automated notifications for:
- Booking confirmation
- Booking cancellation
- Check-in reminder
| Layer | Technology |
|---|---|
| Language | Java 21 |
| Architecture | Microservices |
| Build Tool | Maven / Gradle |
| Database | PostgreSQL (per service) |
| Messaging | RabbitMQ / Kafka |
| API Gateway | Spring Cloud Gateway |
| Containerization | Docker + Docker Compose |
This project is designed to practise:
- Encapsulation — Room, Booking, Invoice classes hide internal data
- Inheritance — Guest, Receptionist, Manager extend Person/Account
- Polymorphism — Payment types (CreditCard, Cash, Check) implement a common interface
- Abstraction — Notification service abstracts delivery channels
- Design Patterns — Observer (notifications), Factory (room creation), Strategy (payment)