GithubHelp home page GithubHelp logo

hotelreservationsystem's Introduction

Hotel Reservation System

๐Ÿ‘‹ About this project

This is an implementation of a hotel reservation system

๐ŸŽฒ Usage

Guests can fill the make reservation on the website and pay for the reservation. Admin can manage reservations, hotel and rooms.

โœ”๏ธ Business Goals and Objectives

The primary goal is to create an easy to use platform where guests can make reservation.

๐Ÿ”ฅ Features

  • Reservation management
  • Room and hotel management
  • Pay for reservation
  • Payment processing
  • User authentication

๐Ÿค– Frameworks

  • Back: C#, ASP.NET Core, RabbitMQ, PostgreSQL, Swagger
  • Front: TypeScript, React, Tailwind CSS
  • CI/CD: Git, GitHub Actions, Docker

๐Ÿ“‘ Requirements

Glossary

Functional requirements

  • The guest must be able to make a reservation
  • The guest must be able to pay for the reservation
  • The guest must be able to cancel the payment
  • The guest should receive an email about the successful creation of the reservation
  • The guest should receive an email about the successful payment of the reservation
  • The guest should be able to retrieve reservation using a link
  • The guest should be able to retrieve the reservation by id
  • Administrators can register new hotels in the system
  • Hotel administrators can add, update, and delete hotel rooms
  • Administrators can create different types of numbers and assign them to numbers
  • Administrators can set prices for different types of rooms
  • Administrators can assign employees such as the administrator
  • Administrators can assign employees such as the administrator
  • The administrator can register and evict guests
  • Login and registration is carried out by the administrator
  • The employee with secretary role should check in and checkout guests

Non-functional requirements

The ISO25010 standard is used in order to define the system's quality attributes.

Functional Suitability

  • Functional Completeness: The platform must include functionalities for room reservation, payment processing, check in and check out and hotel management by admin and staff to meet fundamental business objectives.

Performance Efficiency

  • Resource Utilization: Efficient resource utilization is important for cost-effectiveness and scalability, but there may be initial tolerance for suboptimal usage.
  • Capacity: The system should be able to scale, but initial capacity planning is based on estimates and can be adjusted as actual usage patterns emerge.

Compatibility

  • Interoperability: Interoperability is critical for exchanging data with payment systems essential for the core functionality of the platform.

Usability

  • User Error Protection: While important, the system can be initially forgiving of user errors, with improvements over time based on user feedback.
  • User Interface Aesthetics: Aesthetics are important for user satisfaction but are less critical than functionality and can be enhanced incrementally based on user feedback.

Reliability

  • Availability: The system needs to be accessible when required, given the time-sensitive nature of tasks and payments.
  • Fault Tolerance: The system should handle faults gracefully to avoid disruption in user activities, but some downtime can be tolerable if quickly remedied.
  • Recoverability: In case of system failure, swift recovery is necessary to ensure continuity of user activities and data integrity.

Security

  • Confidentiality: Essential for protecting sensitive user data, such as reservation details, guest information and payment details, from unauthorized access.
  • Integrity: Critical for ensuring data is not improperly altered, whether accidentally or maliciously, which is paramount for transactional systems.
  • Non-repudiation: Important for providing proof of actions, particularly for dispute resolution, but the system can initially function without it if necessary legal mechanisms are in place.
  • Accountability: It facilitates tracking of user actions, which is important for auditing and security purposes, but may not be as immediately critical as confidentiality and integrity.
  • Authenticity: Authenticity of user identity is non-negotiable for the system as it manages hotels and guests information.

Maintainability

  • Modularity: For a system with multiple interacting components, modularity is essential to manage complexity and facilitate future updates with minimal impact.
  • Reusability: Reusability is beneficial for future projects and efficiency, but it is not crucial for the initial operations of the system.
  • Analysability: Analysability is important for maintaining high quality and quick issue resolution, although it can be improved iteratively.
  • Modifiability: The platform must be able to evolve over time to meet changing needs and incorporate new technologies or feedback without significant downtime or risk of defects.
  • Testability: To ensure continuous high quality, especially for a system handling personal data, the ability to test changes thoroughly is non-negotiable.

๐Ÿ› ๏ธ Architecture

architecture

โœ๏ธ Contributing

If you have a suggestion that would make this better, please fork the repo and create a pull request:

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature)
  5. Open a Pull Request

hotelreservationsystem's People

Contributors

kimfom01 avatar stacksharebot avatar

Watchers

 avatar

hotelreservationsystem's Issues

Add manager role

  • Managers and admin roles should create and manage room types and rooms
  • Managers and admin roles should create and manage employees with receptionist roles
  • Managers and admin roles can generate weekly reports to be sent to their email address

Move admin creation to a cli client

Admin account should be created only via the CLI account limiting the number of random admin accounts in the system

  • Add dedicated endpoint for admin account creation

Redesign entities and relationships

Redesign entities and relationships of database to accommodate different types of users and their roles e.g. admins, managers, receptionists and possibly guests

Guest check in and check out

Depends on #42

Receptionist should check in and checkout guests

  • Expose protected endpoints to enable this feature
  • Add a dedicated page for checking and checkout

Use global exception handler

Add a global exception handler middleware in the pipeline that catches all exceptions and returns an appropriate error message

Add redirect to payment page

  • Add a timeout for payment on the server and if payment is not made after the timeout publish a reservation timed out event that will be handled by the reservation service
  • Redirect the user to payment page when the user makes a reservation so that they can make payment
  • Add a timeout on the UI to cancel the reservation if the user doesn't pay within the time and free up the room.

Fix: Reserve/Free room

Use mediator to communicate to between reservation and room when creating a new reservation

Add feature to search for hotels based on location (city)

  • Research how booking.com, tutu.ru and other platforms implements this feature
  • Add location field in hotel entity
  • Generate new migrations
  • Add endpoint to take a location, search and return all hotels in the city
  • Add UI to search for hotels and display results

Employee enrollment

Depends on #49

Employee accounts must be created only from the dedicated enrollment page

  • Modify register endpoint to work for only employee accounts
  • Passwords will be generated and sent to their email address

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.