{"id":50653552,"url":"https://github.com/zeevolution/hotel-reservation-kotlin","last_synced_at":"2026-06-07T22:34:22.963Z","repository":{"id":363191970,"uuid":"582729934","full_name":"zeevolution/hotel-reservation-kotlin","owner":"zeevolution","description":"A Kotlin project for hotel reservation management","archived":false,"fork":false,"pushed_at":"2023-10-13T00:52:07.000Z","size":73,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-07T21:25:50.053Z","etag":null,"topics":["gradle","hotel-booking","hotel-management-system","kotlin"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zeevolution.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-12-27T17:51:55.000Z","updated_at":"2025-11-12T22:04:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zeevolution/hotel-reservation-kotlin","commit_stats":null,"previous_names":["zeevolution/hotel-reservation-kotlin"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/zeevolution/hotel-reservation-kotlin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeevolution%2Fhotel-reservation-kotlin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeevolution%2Fhotel-reservation-kotlin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeevolution%2Fhotel-reservation-kotlin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeevolution%2Fhotel-reservation-kotlin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zeevolution","download_url":"https://codeload.github.com/zeevolution/hotel-reservation-kotlin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeevolution%2Fhotel-reservation-kotlin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34041087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gradle","hotel-booking","hotel-management-system","kotlin"],"created_at":"2026-06-07T22:34:22.362Z","updated_at":"2026-06-07T22:34:22.955Z","avatar_url":"https://github.com/zeevolution.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HotelReservation - A Kotlin project for hotel reservation management\n\n### This is the kotlin version of the original [zeevolution/hotel-reservation](https://github.com/zeevolution/hotel-reservation) project written in Java.\n#### Note: This kotlin version preserves the same structure from its original source, so you can have an easy time comparing and learning the differences and similarities between Java and Kotlin.\n\nThis is a `kotlin` application for booking hotel rooms which I developed for translating the original [zeevolution/hotel-reservation](https://github.com/zeevolution/hotel-reservation) project written in Java.\nThe goal was to practice Kotlin and evaluate differences and similarities with the Java programming language. The project itself creates a hotel application which allows users to book and manage room reservations.\nThe project emphasizes the use of Kotlin programming language for practicing and elevating fundamental skills as a Kotlin developer.\n\nYou may run the project by executing the [HotelApplication.kt](https://github.com/zeevolution/hotel-reservation-kotlin/blob/main/app/src/main/kotlin/hotel/reservation/kotlin/HotelApplication.kt) class\non your favorite Kotlin IDEA.\n\n![hotel_reservation](https://user-images.githubusercontent.com/15267154/108933613-3718ac80-762a-11eb-97eb-69d3739d6413.gif)\n\n## User Scenarios\nThe application provides four user scenarios:\n\n1. \u003cb\u003eCreating a customer account\u003c/b\u003e: The user needs to first create a customer account before they can create a reservation.\n\n2. \u003cb\u003eSearching for rooms\u003c/b\u003e: The app should allow the user to search for available rooms based on provided checkin and checkout dates. If the application has available rooms for the specified date range, a list of the corresponding rooms will be displayed to the user for choosing.\n\n3. \u003cb\u003eBooking a room\u003c/b\u003e: Once the user has chosen a room, the app will allow them to book the room and create a reservation.\n\n4. \u003cb\u003eViewing reservations\u003c/b\u003e: After booking a room, the app allows customers to view a list of all their reservations.\n\n## Admin Scenarios\nThe application provides four administrative scenarios:\n\n1. \u003cb\u003eDisplaying all customers accounts\u003c/b\u003e.\n2. \u003cb\u003eViewing all of the rooms in the hotel\u003c/b\u003e.\n3. \u003cb\u003eViewing all of the hotel reservations\u003c/b\u003e.\n4. \u003cb\u003eAdding a room to the hotel application\u003c/b\u003e.\n\n## Reserving a Room\nThe application allows customers to reserve a room. Here are the specifics:\n\n1. \u003cb\u003eAvoid conflicting reservations\u003c/b\u003e: A single room may only be reserved by a single customer per a checkin and checkout date range.\n2. \u003cb\u003eSearch for recommended rooms\u003c/b\u003e: If there are no available rooms for the customer's date range, a search will be performed that displays recommended rooms on alternative dates. The recommended room search will add seven days to the original checkin and checkout dates to see if the hotel has any availabilities, and then display the recommended rooms/dates to the customer.\n\u003e Example: If the customers date range search is 1/1/2020 – 1/5/2020 and all rooms are booked, the system will search again for recommended rooms using the date range 1/8/2020 - 1/12/2020. If there are no recommended rooms, the system will not return any rooms.\n\n### Room Requirements\n\u003cb\u003eRoom cost\u003c/b\u003e: Rooms will contain a price per night. When displaying rooms, paid rooms will display the price per night and free rooms will display \"Free\" or have a $0 price.\n\u003cb\u003eUnique room numbers\u003c/b\u003e: Each room will have a unique room number, meaning that no two rooms can have the same room number.\n\u003cb\u003eRoom type\u003c/b\u003e: Rooms can be either single occupant or double occupant (Enumeration: SINGLE, DOUBLE).\n\n### Customer Requirements\nThe application will have customer accounts. Each account has:\n\n1. \u003cb\u003eA unique email for the customer\u003c/b\u003e: RegEx is used to check that the email is in the correct format (i.e., name@domain.com).\n2. \u003cb\u003eA first name and last name\u003c/b\u003e.\n3. The email RegEx is simple for the purpose of this exercise and may not cover all real-world valid emails. \n\u003e For example \"name@domain.co.uk\" would not be accepted by the above RegEx because it does end with \".com\". If you would like to try to make your RegEx more sophisticated, you may—but it is not required for this project.\n\n### Error Requirements\nThe hotel reservation application handles all exceptions gracefully (user inputs included), meaning:\n\n1. \u003cb\u003eNo crashing\u003c/b\u003e: The application does not crash based on user input.\n2. \u003cb\u003eNo unhandled exceptions\u003c/b\u003e: The app has try and catch blocks that are used to capture exceptions and provide useful information to the user. There are no unhandled exceptions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeevolution%2Fhotel-reservation-kotlin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzeevolution%2Fhotel-reservation-kotlin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeevolution%2Fhotel-reservation-kotlin/lists"}