Submitted:
09 June 2026
Posted:
11 June 2026
You are already at the latest version
Abstract
Keywords:
1. Introduction
2. Related Apps for Parking
3. Architecture of the Developed Mobile App
3.1. Base Architecture
- Model: Controls the data, structures, and internal logic of the application. In Parky, the model is responsible for processing and storing data related to users, parking spots, and books. Data is synchronized in real time via the Firebase database, ensuring its consistency and security.
- View: It represents the visualization of the information and the application's user interface. In Parky, this is implemented using XML, which enables the visualization of login and registration forms, user profiles, parking spots search and book, as well as other functionalities. The user interface is responsible for ensuring a pleasant user experience.
- Presenter: It receives input data from the user and converts it into commands for the Model or View. In Parky, the Presenter controls the interactions between the user and the application by processing user actions (such as booking, parking recommendations, and others) and ensuring that the view is updated in response to changes in the data.
3.2. Functions Implemented
- User: The user initiates the process by submitting a booking request (Request Book).
- Frontend: It receives the request from the user and sends HTTP POST request to the server (FindParkingDetailsActivity) with the path "/reserve".
- FindParkingDetailsActivity: It is responsible for processing the request. It calls the checkAvailability() method in the data model (ParkingSlotModel) to check the availability of parking spots.
- ParkingSlotModel: It processes the availability check request and returns a response to FindParkingDetailsActivity, indicating whether or not there are available spots in the parking.
- FindParkingDetailsActivity: Based on the response from ParkingSlotModel, FindParkingDetailsActivity calls the saveReservation() method in the Firebase database to save the booking if spots are available.
- FirebaseDatabase: It stores the booking information and returns a response to FindParkingDetailsActivity indicating whether the operation was successful or not.
- FindParkingDetailsActivity: After receiving a response from FirebaseDatabase, FindParkingDetailsActivity returns the result (TRUE or FALSE) back to the frontend.
- Frontend: It returns the result and displays the booking status to the user (Show Reservation Status).
4. Software Implementation
- ConstraintLayout: This is one of the main components used in the application. It is used to arrange visual elements. It enables flexible and efficient positioning of elements, allowing constraints to be defined between them. This results in an adaptive and dynamic user interface. It also simplifies the support and expansion of the application by ensuring that images are resized on different devices with varying screen sizes.
- ImageView and TextView: These are the main display components in the app. ImageView is used to display graphical resources such as images of parking spots or icons, while TextView is used to display text information such as parking spot names, contact information, and other details. The LinearLayout feature is used to arrange multiple elements vertically or horizontally. This ensures a clear structure and consistency in the layout of the content on the screen.
- Menu XML files define the navigation options available to the user within the app. It contains various navigation elements such as profile, feedback, password change, parking search, and others, providing quick access to the app’s main functions. The menu is easy to customize and offers convenient and intuitive navigation.
- AppCompatButton: This is a function for creating buttons. It allows users to make recommendations regarding parking, bookings, and navigation.
- The Java programming language was used to develop the backend of the Parky application for implementing business logic and data processing. [12] Java provides a powerful platform for creating stable and efficient applications, with extensive capabilities for data control and user interface interaction. The main components of the backend are as follows:
- Business logic and data control with Java: Java is used to implement the application’s core business logic, such as processing bookings, customer data control, parking recommendations, and navigation. Java classes are responsible for processing user input, interacting with the user interface, and performing operations such as monitoring available parking spots and creating notifications.
- Users’ sessions control: The connection to Firebase is realized through Java, using Firebase Authentication (FirebaseAuth), which provides secure access to the application and control of user sessions. Through FirebaseAuth, users can register, log in, and maintain a secure session while interacting with the application.
- Data storage and real time synchronization: The Firebase Realtime Database is integrated into the application via Java to provide data storage and data control such as parking spot information, bookings, recommendations, and user data. Any changes to the data are synchronized in real time between client devices and the Firebase database, ensuring that users always have access to up-to-date information. Java classes handle communication with Firebase and perform the necessary operations for updating and extracting data.
- Events processing and notifications: Java is also responsible for processing user events and generating in-app notifications. For example, when a user books a parking spot, Java classes update the relevant data in Firebase and generate in-app notifications to inform the user that the operation was successful.
- Connectivity control: The app uses Java to control Internet connectivity and check for an active connection before performing operations that require communication with Firebase. This is an important aspect of ensuring the app works reliably and correctly, especially for operations that require access to real-time data.
- Request Book: Specify the starting point where the user submits a booking request.
- HTTP POST /book: The request was sent from the front end to FindParkingDetailsActivity to start the booking process.
- checkAvailability(): A function in the data model that checks whether parking spots are available.
- saveReservation(): A function that saves the booking in the database if available spots existed.
- Show Book Status: The final step, where the booking confirmation is sent to the user.
- Contact: The phone number to contact the parking spot.
- Email: The user's email address associated with the specific parking spot.
- Latitude and Longitude: The geographic coordinates of the parking spot, used for map display and navigation.
- Name: Name of the parking spot.
- ParkingImage: Image associated with the parking spot, displayed in the user interface.
- Prices: Pricing information for the parking spot.
- SelectedPrice: The price selected by the user for reserving the parking spot.
- Status: Current status of the parking spot (e.g., "Available").
- UsedId: Unique ID of the user who reserved the parking spot
- Users and ParkingSlots: The relationship between these two entities allows parking spots to be linked to specific users, such as reserving selected or recommended parking spots for a given user.
- Users and Feedback: Every piece of feedback or rating provided by a user is linked to a specific user using the userID. This allows for the personalization of the collected feedback.
- Users and ChangePassword: Every password change is linked to a specific user, with information about the old and new passwords stored in the application.
- Real-time storage and control of big data, even with a high number of users.
- Fast access to and process information that is updated and synchronized in real time.
- Data protection through built-in access control mechanisms.
- Database scalability as the number of users increases.
- Statistical processing of data in the database, such as the number of active users per day, which helps analyze user behavior and optimize the application’s performance.
- Ability to integrate with other Google services and platforms, which simplifies the expansion of the application’s functionalities.
5. Results of the Workability Tests
- Test 1, 2, 3: This feature provides the application's base functionality related to user authentication. Logging in requires entering valid data, and logging out terminates the active session.
- Test 4: This test verifies whether the user can successfully submit feedback through the app. A successful test indicates that communication between users and the support team is functioning properly.
- Test 5: The system checks whether the user can successfully booking a parking spot. Passing this test indicates that the app is communicating correctly with the database and updating the available parking spots.
- Test 6: The system checks whether the user can recommend a parking spot. A successful test means that the recommendation function works properly and that data is stored and shared correctly.
- Test 7: The system is checking whether a user can both booking and recommend a parking spot. Successful completion of this test indicates that the system can perform both actions without any conflicts.
- Test 8: The test verifies whether the app displays the recommended parking spots to the user. Passing this test indicates that the app correctly displays and filters the recommendations.
- Test 9: The test checks whether the user can view the history of all their previous bookings. A successful test confirms that the app correctly stores and retrieves data regarding previous bookings.
6. Discussion
7. Conclusions
Funding
Conflicts of Interest
Abbreviations
| DB | Data Base |
| MVP | Model–View-Presenter |
| XML | Extensible Markup Language |
References
- Available online: https://en.parkopedia.com.
- Available online: https://www.parkme.com.
- Available online: https://www.justpark.com.
- Available online: https://www.easypark.com.
- Syromiatnikov, A.; Weyns, D. A Journey through the Land of Model-View-Design Patterns. In Proceedings of Working IEEE/IFIP Conference on Software Architecture 2014 (WICSA; 2014; ISBN 978-1-4799-3412-6. [Google Scholar] [CrossRef]
- Cheng, Y.; Domingues, A. O. Advanced Android App Architecture, Real-world app architecture in Kotlin 1.3, Android 9, Android Studio 3.2, 1st Edition, 404 p. 2026. [Google Scholar]
- Mainkar, Pr. Expert Android programming, Master skills to build enterprise grade Android applications, publ. O’Reilly media; Packt Publishing, 2017. [Google Scholar]
- Smyth, N. Android Studio Otter Essentials - Java Edition: Developing Android Apps Using Android Studio Otter and Java, 1st Edition, publ. Payload Media, ISBN-10: 1965764312, ISBN-13: ISBN-13: 978-1965764312, 692 p. 2025. [Google Scholar]
- Forrester, Al.; Boudjnah, Er.; Dumbravan, Al.; Tigcal, J. How to Build Android Applications with Kotlin: A hands-on guide to developing, testing, and publishing production-grade Android 16 apps, 3rd Edition, publ. O’Reilly media; Packt Publishing, 2025; p. 654 p. ISBN -13: 978-1835882764. [Google Scholar]
- Darcey, L.; Conder, S. Android Wireless Application Development; Addison-Wesley Professional, 2012; ISBN -10: 0321813839, ISBN-13: 978-0321813831. [Google Scholar]
- Gookin, D. Guide to XML and JSON Programming, 1st Edition, ISBN-10: 1088918328, ISBN-13: 978-1088918326, 107 p. 2019. [Google Scholar]
- Mayers, D. S. Data Structures and Algorithms in Java: A Project-Based Approach, 1st Edition, publ; Cambridge University Press., 2024; ISBN -10: 1009260332, ISBN-13: 978-1009260336. [Google Scholar]
- Ashok Kumar, S. Mastering Firebase for Android Development: Build real-time, scalable, and cloud-enabled Android apps with Firebase, 1st Edition, publ. O’Reilly media, Packt Publishing, 2018; p. 394pISBN ISBN-13: 978-1788624251.


| № | Functionalities | Benchmark test | Comparison criteria | Status | Bugs |
| 1 | The app serves as an entry and exit for the users. | Test 1 | Check whether the user successfully logs in to the system when entering the correct data. | Passed the tests. | - |
| Test 2 | Check whether an error is generated when invalid data is entered. | ||||
| Test 3 | Check whether, when the exit button is pressed, the users are logged out of the app and their session is terminated. | ||||
| 2 | The app sends feedback. | Test 4 | Check whether the user can submit feedback through the app. | Passed the test. | - |
| 3 | The app books parking spot. | Test 5 | Check whether the user can book a parking spot through the app. | Passed the test. | - |
| 4 | The app recommends parking spot. | Test 6 | Check whether the user can recommend a parking spot through the app. | Passed the test. | - |
| 5 | The app both recommends and books parking spots. | Test 7 | Check whether the user can both book and recommend a parking space. | Passed the test. | - |
| 6 | The app visualizes recommended parking spots. | Test 8 | Check whether the app visualizes the recommended parking spots to the user. | Passed the test. | - |
| Application name |
Development country |
Operational system |
Functionalities |
User-friendly interface |
Price | |
| Parky (Presented in this paper.) |
Bulgaria | Android | Booking parking spots | High | free | |
| Booking selecting a parking spot based on recommended with ratings. | ||||||
| Parkopedia | United Kington |
Android | Booking of parking spots. | Middle | ||
| iOS | Real-time overview of available spots. | free | ||||
| Web | ||||||
| ParkMe | USA | Android | Overview of the fees for spots. | High | free | |
| iOS | Navigation to the parking. | |||||
| JustPark | United Kington |
Android | Booking parking spots. | Middle | free | |
| iOS | Parking spots management with the application. | |||||
| Web | ||||||
| EasyPark | Sweden | Android | Navigation to the parking. | Middle | free | |
| iOS | Online payment of the fees. | payable depending on the region |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2026 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).