York University Parking System
PROJECT OVERVIEW:
The York Parking System is a real-time smart parking management application designed to automate the booking, monitoring, and payment process within a university environment. The system was developed in Java Swing and connected to Firebase Firestore, enabling continuous data synchronization between users and administrators.
The project’s objective was to minimize manual intervention in parking management by providing a digital solution capable of handling multiple user types students, faculty, visitors, and administrators through distinct access privileges. It ensures transparent slot allocation, live occupancy visualization, and payment automation while maintaining data accuracy across all user interfaces.
Developed under EECS 3311( Software Design) , this project demonstrates proficiency in applying advanced software engineering principles, design patterns, and cloud-integrated system design for a real-world problem scenario.
SYSTEM ARCHITECTURE AND DESIGN:
The system architecture was built as a modular, multi-layered framework emphasizing maintainability, reusability, and real-time responsiveness. It was divided into four cohesive subsystems:
-
User Management: Manages authentication and session handling for multiple roles (Student, Faculty, Visitor). The GUI dynamically adapts based on the user type.
-
Parking Services: Controls slot availability, occupancy detection, and extensions through hierarchical class structures (ParkingLot, ParkingSpace, CompactSpace, HandicappedSpace).
-
Payment & Rates Module: Automates rate computation and deposit validation using the PaymentRates.java class.
-
Administration Dashboard: Allows super-admins to monitor the system, duplicate accounts using the Prototype Pattern, and create management roles using the Factory Pattern.
All modules interact with Firebase Firestore, which serves as the real-time data layer for synchronization between client and admin dashboards. The architecture follows Object-Oriented Design (OOD) principles with high cohesion and loose coupling, implemented through patterns such as Singleton (for Firebase setup), Observer (for live GUI updates), and Composite (for hierarchical slot control).
This architectural strategy ensures that every change in a slot, booking, or payment is propagated instantly across the interface, providing a fault-tolerant, scalable, and industry-grade system foundation.
IMPLEMENTATION AND TECHNOLOGIES:
The frontend of the York Parking System was implemented using Java Swing, providing an interactive, event-driven interface for user booking and administration tasks. The backend utilized Firebase Firestore, enabling asynchronous real-time database communication.
The development followed a Test-Driven Development (TDD) methodology, combining JUnit for unit testing, Randoop for automated test generation, and PIT Mutation Testing for quality assurance. This multi-stage testing pipeline achieved over 90% code coverage, ensuring logic reliability across all modules.
Design patterns were embedded within the codebase to manage complexity Strategy for rate computation, Observer for real-time updates, and Factory for user object creation.
The GUI connected to Firestore through real-time listeners, ensuring that changes in slot occupancy or payment details were immediately reflected across all user dashboards. This combination of design discipline and asynchronous architecture demonstrates a deep understanding of scalable system implementation in modern software engineering.
MY ROLE AND KEY LEARNINGS:
My primary responsibility was developing the frontend layer of the system using Java Swing and integrating it with Firebase Firestore for real-time updates. I engineered an event-driven graphical interface composed of custom Swing components (JFrame, JPanel, JTable, JButton) that managed user interactions such as slot booking, authentication, and payment validation.
I implemented MVC (Model-View-Controller) principles to separate UI logic from application data, ensuring that the interface remained modular and maintainable. To achieve real-time synchronization, I configured Firebase listeners that automatically updated the GUI whenever booking or payment records changed in the database.
Within the GUI layer, I integrated the Observer Pattern to refresh view components dynamically without manual reloads, improving system responsiveness. I also collaborated on component event handling, thread management for asynchronous data operations, and error-state visualization for smoother user experience.
Through this role, I gained hands-on experience in event-driven programming, GUI concurrency management (Swing Event Dispatch Thread), and cloud-connected interface design. These skills directly translate to building scalable, data-driven applications with synchronized user experiences across networked environments.
