Assessment
January 6, 2025 · View on GitHub
Arrival – Hotel & Apartment Booking App
A WinUI 3 application for managing hotel and apartment bookings and rentals.
Introduction
Arrival is a modern and intuitive platform designed to streamline the booking process for hotels and apartments. Built with the latest WinUI 3 framework, the app provides users with a seamless experience to explore, book, and manage their stays with ease.
Appearance & Design
Created with WinUI and the latest design ideologies, Arrival is modern while keeping all of the classic features people need. We use WinUI 3 to keep our user interface, clean, modern and consistent with Windows 11 UI and UX. Although, this app does work on Windows 10 too.
We use all of your favourite material: Acrylic. We use Microsoft's icons and controls as well as some of our own to create a generally native feeling experience. Our own controls and icons give users a truly personalised experience, being able to choose their own icon packs and with features like compact mode, you can use it on any Windows device!
Demo Video
Arrival - Booking Management System | Milestone II | Demo Usage
Main Feature Screenshot

![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Create Listing Step Screenshot

![]() |
![]() |
![]() |
![]() |
Note
These screenshots may not contain all of the features shown in the app itself from GitHub. Some features are being tested internally.
All Features
Basics
| Feature | Details | Work Hours | Contributor | Is Ready |
|---|---|---|---|---|
| User Registration / Login / Password Recovery | Allows users to create accounts, log in, and recover passwords for managing personal information and accessing services.
You can try signing in with this example account: janesmith
password
You can try signing up following these Regex Patterns: ^[^@\s]+@[^@\s]+\.[^@\s]+$
|
3h | Nguyen Long Giang 21120060 |
✅ |
| Booking/Cancellation of Accommodation | Diverse booking options for private homes, apartments, and hotels ranging from budget to premium. | 2h | Phan Quoc Huy 21120082 |
✅ |
| Search for Rooms/Apartment by Schedule | Enables users to search for hotels and apartments by location, travel dates, and number of guests. | 2h | Phan Quoc Huy 21120082 |
✅ |
| Preset Filters | Filters based on destination types, including Amazing Views, Beach, Farms, Islands, etc. Currently only the All & Trending filters are available. |
1h | Phan Quoc Huy 21120082 |
✅ |
| Advanced Filters | Filters by price, room type, guest capacity, amenities (Wi-Fi, air conditioning, pool), reviews, free cancellation, etc. | 2h | ||
| Discount Voucher Management | Allows discounts to be applied to the final payment amount. | 1h | Nguyen Long Giang 21120060 |
✅ |
| User Review Management | Customers can leave a review about rooms/accommodations, helping improve service quality. You can leave a review in Rental Details Page. | 1h | Phan Quoc Huy 21120082 |
✅ |
| Question and FAQ Management | Handles user questions about rooms/accommodations and a FAQ section for common booking, payment, and cancellation inquiries. You can leave a question in Rental Details Page. | 2h | Phan Quoc Huy 21120082 |
✅ |
| Booking History Management | Stores user's past booking history. | 1h | Nguyen Long Giang 21120060 |
✅ |
| Booking Confirmation via Email | Sends booking confirmations through email or in-app notifications. | 2h | ||
| Report Abuse Management | Allows users to report inappropriate behavior or accommodations that do not meet standards or match descriptions.
You can make a report in Rental Details Page. The Management feature is integrated in Administrator Page > Subscriptions. |
1h | Nguyen Long Giang 21120060 |
✅ |
| Loyalty Member Management | Loyalty program offering exclusive benefits such as vouchers and priority listings. | 2h | ||
| Amenity and Facility Tag Setup for Hosts | Hosts can create lists of tags for services and amenities their accommodations offer. | 2h | Phan Quoc Huy 21120082 |
✅ |
| Email/App Notifications | Sends notifications for successful bookings, upcoming check-ins, and booking changes. | 2h | Nguyen Long Giang 21120060 |
✅ |
| Trending/Priority Listing Management | Lists popular accommodations or those requested to be prioritized for a certain period.
You can perform multiple selection, delete items, deselect & invert item selection. With the Requests filter, you can add items to the priority list with the Add to Priority Edit Option.
This feature is integrated in Administrator Page > Listing Requests. |
2h | Phan Quoc Huy 21120082 |
✅ |
| Multilingual Support | Allows users to select the application language. | 2h | ||
| Favourite List Management | Allows users to save and manage a list of favorite rooms/apartments. | 1h | Nguyen Long Giang 21120060 |
✅ |
Advance
| Feature | Details | Work Hours | Contributor | Is Ready |
|---|---|---|---|---|
| Live Chat with Host/Staff/Bot | Chat system supports live chat with host, hotel staff or bot before booking. | 1h | Nguyen Long Giang 21120060 |
✅ |
| Travel Suggestions | Personalized travel suggestions by AI. | 1h | ||
| Map Integration | Display room/apartment location on map, helps it easy to locate.
This feature is integrated in Rental Details Page & Map Services Page. |
1h | Phan Quoc Huy 21120082 |
✅ |
Important
Milestone III
Total Works Need To Be Done: 20h (for 2 members)
Total Works Completed: 23h
Total By Assignment Per Member:
- [21120060] Nguyen Long Giang: 10h
- [21120082] Phan Quoc Huy: 13h
Assessment
UI/UX
- Modern, clean and consistent interface
- Using latest WinUI 3 design ideologies: Fluent Design with Acrylic translucent material
- Input validation: Validate empty string and white spaces in all string
TextBox- User Report Form:
Reason&Descriptiontext boxes - Review Form:
Your Commenttext box - Rental Details Page:
Ask Questiontext box - Sign In/Sign Up/Reset Password Page:
Username,Password,Confirm Passwordtext boxes - Auto Suggestion Search Box:
Search Destinationin Home Page,Search Navigation Itemin Shell Page, etc.
- User Report Form:
Design Patterns & Architecture
- MVVM Architecture
- This helps separate the application logic from the user interface. ViewModels like
HomeViewModel,RentalDetailsViewModel, etc. are registered and bound to the respective Pages.
- This helps separate the application logic from the user interface. ViewModels like
- Service Locator
GetService<T>()method helps retrieve the service from the Host.
- Dependency Injection (DI)
- Using
HostandConfigureServicesmethod to register services, DI pattern helps to separate dependencies and increase flexibility in configuring and replacing services. - Services are registered with different scopes (
Singleton,Transient) to ensure appropriate lifecycle for each type of object.
- Using
- Factory Method
- In
ConfigureServices, services and ViewModels are registered with object creation methods (AddTransient,AddSingleton). This structure allows flexibility in creating new objects or reusing singleton objects.
- In
- Page Service
- The
PageService(inherited fromIPageService) is responsible for managing the mapping between ViewModel and Page. TheConfigure<VM, V>()method is used to configure ViewModel and Page pairs, ensuring that each ViewModel has a corresponding Page.
- The
- Lifecycle-aware Component
- The
INavigationAwareinterface defines methods related to navigation. When a ViewModel implements this interface, it provides logic for handling navigation events, such as moving to a page (OnNavigatedTo) or leaving a page (OnNavigatedTo).
- The
- Facades Interface
- To simplify access to complex subsystems, the Facade pattern is used with interfaces like
HomeFacade,RentalDetailFacade, and others. These facades abstract and encapsulate business logic, exposing only necessary methods to the ViewModel for better modularity and maintainability.
- To simplify access to complex subsystems, the Facade pattern is used with interfaces like
- ViewModel Step Manager
- A custom manager for multi-step workflows like
Create New Listing. It coordinates navigation between steps by tracking current progress and maintaining state, enabling a seamless user experience while ensuring modular ViewModels for each step. - Each Step has a ViewModel that inherits from the abstract partial class
BaseStepViewModel.
- A custom manager for multi-step workflows like
Advanced Topics
- Acrylic System Backdrops
- Provide a different background for a Window other than the default white or black (depending on Light or Dark theme)
- Desktop Acrylic are the current supported backdrops
- Dark Theme
- This application supports Light and Dark themes as a personalization option in application settings
- We use Light mode by default, but users can choose Dark mode, which changes much of the UI to a dark color
- Attached Drop Shadow
- Allows many elements to share a common backdrop for casting shadows
- Applied to
Schedule Search Barin Home Page
- Connected Animations
- Created a dynamic and compelling navigation experience by animating the transition of an element between two different views
- Applied to the Item Thumbnail named
itemHeroin Home Page & Rental Details Page
- Auto Suggest Box
- A text control that makes suggestions to users as they type. The app is notified when text has been changed by the user and is responsible for providing relevant suggestions for this control to display
- Applied to
Search Destinationin Home Page andNavigation Itemin Shell Page
- Inverse Background Brush
- A Background theme resource that inverts the control's background brush bases on the background of the application
- Applied to several buttons like
Book Now,Submit Question
- Auto Scroll to Top
- Helps scroll to top of the main
ScrollViewwhen repeatedly navigate to a page - Optimize page resources when reloading
- Applied to Rental Details Page
- Helps scroll to top of the main
- Adaptive Grid View
- This control presents items in a evenly-spaced set of columns to fill the total available display space. It reacts to changes in the layout as well as the content so it can adapt to different form factors automatically.
- Applied to Home Page & Rental Details Page
- Flip View & Pips Pager
FlipViewallows flipping through a collection of items, one at a time. It's great for displaying images from a gallery, pages of a magazine, or similar items.PipsPagerallows the user to navigate through a paginated collection and is independent of the content shown.- Applied to every image collection views
- API Integration (GeoNames)
- Integrated with
GeoNames APIfor geographic data like location search and auto-completion, enhancing location-based features such as maps and travel suggestions.
- Integrated with
- WebView2 Integration
- Integrated with WebView2 to embed
Google Mapsinto the application for location-based functionalities. - Key feature is URL Handling that intercept navigation events to extract geographic coordinates.
- Integrated with WebView2 to embed
- System Notification & Activation Handling
- Implements Windows notifications and activation handling for user alerts.
- Ensures proper lifecycle management when users interact with notifications (e.g., booking confirmations or reminders).
- Chat Bot
- Integrated an AI chatbot using the Gemini API from Google AI Studio for natural language processing.
- Handles user queries by sending them to the Gemini API and retrieving responses.
- Utilizes an API key for authentication and secure communication.
Teamwork - Git Flow
Project Management With Trello

Git Flow

Quality Assurance
Source Code Review & Merg Into Main Process

Important









