BookingApp is a feature-rich desktop and console-based application built with C# and WPF, designed to streamline the management of accommodations, tours, reservations, and user interactions.
The application is structured using the MVVM (Model-View-ViewModel) design pattern for WPF and clean architectural principles for the console version. It supports multiple user roles — Owners, Guests, Guides, and Tourists — each with tailored functionalities.
🟢 This README emphasizes the Guest role, which was actively developed and tested by me.
| Role | Key Functionalities |
|---|---|
| Guest | Book accommodations, manage reservations, rate hosts, use forums |
| Owner | Manage accommodations, view stats, respond to reviews, handle booking changes |
| Guide | Create/cancel tours, track tour activity, review statistics |
| Tourist | Book tours, rate experiences, request complex tours, win vouchers |
Each role includes standard and "Super-user" privileges, unlocking advanced features like forum interaction, renovations scheduling, tour management, and more.
As a Guest, you interact primarily with accommodations, bookings, and community features. This role is designed to provide a smooth and intuitive reservation experience.
| Capability | Description |
|---|---|
| 🔍 Search Accommodations | Browse listings filtered by location, availability, and preferences |
| 🏨 Book Accommodations | Instantly reserve available stays |
| 🌟 Rate Accommodations & Hosts | Leave feedback and ratings post-visit |
| 🛠 Propose Renovations | Suggest improvements for better guest experience |
| 📝 View Guest Reviews | Read shared experiences from other users |
| 🔄 Reschedule Reservations | Send requests to change reservation dates |
| ❌ Cancel Reservations | Cancel planned stays directly from the console |
| 🌍 Anywhere / Anytime Booking | System-recommended stays based on flexible criteria |
| 🏅 Super-Guest Features | Access and contribute to the forum, leave and reply to comments |
🏆 Super-Guest status unlocks community engagement via the built-in forum system.
Here is a short visual demonstration of the Guest role in action:
Use the following credentials to log in with different roles:
| Role | Username | Password |
|---|---|---|
| Guest | gost |
gost |
| Owner | vlasnik |
vlasnik |
| Guide | vodic |
vodic |
| Tourist | turista |
turista |
🔐 These are default development credentials.
| Category | Technology |
|---|---|
| Language | C# |
| UI Framework | WPF (Windows Presentation Foundation) |
| Architecture | MVVM (Model-View-ViewModel) |
| Console I/O | .NET Console Application |
| Data Storage | CSV Files |
| Serialization | Custom CSV Serializers |
BookingApp/
├── Model/
│ ├── Accommodation.cs
│ ├── Reservation.cs
│ ├── Tour.cs
│ └── ...
├── ViewModel/
│ ├── Owner/
│ ├── Tourist/
│ └── ...
├── View/
│ ├── CommentForm.xaml
│ ├── CommentsOverview.xaml
│ └── ...
├── Repository/
│ ├── AccommodationRepository.cs
│ └── ...
├── Service/
│ ├── AccommodationService.cs
│ └── ...
├── Dto/
│ ├── AccommodationDto.cs
│ └── ...
├── Resources/
│ ├── Data/
│ │ ├── accommodations.csv
│ │ └── ...
│ ├── Images/
├── Serializer/
│ └── Serializer.cs🧠 The structure reflects a clear separation of concerns, adhering to MVVM and SOLID principles.
- OS: Windows
- .NET Framework 4.7.2 or later
- IDE: Visual Studio 2019+
-
Clone the repository
git clone https://github.com/MarkoKolarski/Booking_app.git
-
Open the solution in Visual Studio.
-
Restore NuGet packages (if required).
-
Build the project
Ctrl + Shift + B
-
Run the app
- Use Visual Studio's
Start Debugging(F5) - Or run the output
.exefrom/bin/Debug
- Use Visual Studio's
-
Login using:
Username: gost Password: gost -
Access the main Guest Menu, where you can:
- Search and book accommodations
- View or cancel current reservations
- Submit reviews or reschedule
- Participate in forum discussions (if Super-Guest)
-
Navigate via numbered options in the console or UI-based forms in the WPF version.
