Sprint 4 - ISIS3510-202402-T13/SeneParking GitHub Wiki

1. Value Proposition

Core Value Proposition

SeneParking transforms the parking experience at Universidad de los Andes through an intelligent, data-driven platform that eliminates parking uncertainty and streamlines the entire parking process. The app combines real-time availability tracking, smart access systems, and predictive analytics to save users time and reduce stress, while generating valuable data insights for better parking management.

SeneParking's value proposition rests on three foundational pillars: technological innovation, user-centric design, and data intelligence. Our implemented features create immediate value through convenience and efficiency, while our business intelligence capabilities enable continuous improvement. The sustainable revenue model ensures long-term viability while maintaining accessibility, making SeneParking a comprehensive solution for campus parking management that benefits all stakeholders in the university ecosystem.

1. Implemented Features Supporting the Value Proposition

The heart of SeneParking's value lies in its smart parking management system. Our IoT-based real-time parking spot detection works seamlessly with automated license plate recognition to create a frictionless parking experience. The interactive map interface provides users with instant visibility of available spots, including specialized filtering for electric vehicles, addressing the growing need for EV support on campus.

We've enhanced the user experience through a comprehensive suite of features. Built-in navigation guides users directly to available spots, push notification system keeps users informed about parking availability, and offline support ensures the app remains functional even with intermittent connectivity.

2. Data Collection and Business Intelligence Capabilities

The platform's data strategy focuses on collecting and analyzing meaningful patterns that benefit both users and operators. We gather operational data about parking usage patterns and user preferences, transforming this information into actionable insights for capacity planning and resource allocation. Our predictive capabilities leverage this data to forecast demand, optimize pricing strategies, and improve resource allocation. This creates a virtuous cycle where better data leads to improved services, which in turn generates more valuable data.

Our business intelligence framework operates across multiple dimensions to ensure continuous service improvement. We monitor system performance in real-time, tracking response times and system reliability during peak usage periods. This technical monitoring is complemented by deep user behavior analysis, helping us understand how students and faculty interact with different features.

The platform collects and analyzes user patterns to optimize the parking experience. We track feature adoption rates, particularly for new technologies like license plate recognition and spot reservations. This data-driven approach allows us to continuously refine our offerings and introduce features that truly matter to our users.

3. Revenue Model Integration

SeneParking's revenue model is designed to be sustainable while providing value to all stakeholders. Our primary revenue streams come from transaction-based fees on parking payments and premium reservations. We've also developed partnership opportunities with nearby parking facilities and local businesses, creating a broader parking network for our users.

The premium features tier will offer advanced capabilities like priority spot access, providing additional value for power users while maintaining essential functionality in the base offering.

What Value do We Create for Stakeholders?

For users, SeneParking delivers immediate value through time savings and stress reduction. The real-time availability information and guaranteed parking through reservations transform what was once an uncertain process into a smooth, predictable experience.

The university benefits from improved parking resource utilization and valuable data insights for campus planning. The platform's ability to optimize parking usage and generate additional revenue streams provides tangible returns on the technology investment.

Business partners gain access to a targeted university demographic and valuable integration opportunities. The data insights we provide help partners make informed decisions about services and promotions.

2. Micro-Optimization Strategies

a. Initial Performance Evaluation

Scenario steps:

  1. Open the app and log in.
  2. Search for a parking lot.
  3. Make a reservation and select payment.

Our objective is to conduct a performance evaluation before implementing micro-optimizations. Based on the results, we will propose targeted micro-optimization strategies and perform a subsequent round of testing to assess their impact.

We are utilizing the Xcode Instruments tool to measure key performance metrics, including overdrawing, CPU usage, GPU performance, and memory management efficiency.

Pre-Micro Optimization Analysis of SeneParking

image

  1. CPU Utilization:

High usage on the main thread dominated by operations such as dyld3::MachOFile (dynamic linking) and strcmp (string comparisons). Dynamic linker overhead suggests inefficiencies in loading frameworks and resolving dependencies during runtime.

  1. Memory Allocations:

Significant transient memory usage (~2.7 GB) indicates heavy reliance on temporary memory for operations like animations and image processing. Persistent memory (~155 MB) is within reasonable limits, but high transient allocation may impact low-memory devices.

  1. Leaks and GPU:

No memory leaks detected, confirming effective use of ARC. No GPU usage recorded, implying that rendering tasks may be CPU-bound, potentially impacting performance in animation-heavy interfaces.

  1. Performance Bottlenecks:

The app's initialization and runtime operations are slowed by dependency resolution and frequent string operations. Animation-related processes (Core Animation) contribute to transient memory usage, which could be optimized.

b. Strategies' Design and Justification

String Handling Optimization:

Design

  • Replace Raw Strings with Enums: Use enums instead of raw strings for states (e.g., reserved, available) to enable efficient comparisons.

  • Cache or Precompute Results: Store results of frequent string comparisons or use hashed values to reduce redundant operations.

  • Dictionary-Based Logic: Replace multiple conditional checks with dictionary lookups for faster and cleaner code.

Justification

Why: Profiling revealed excessive strcmp calls causing CPU inefficiencies.

Impact: Reduces runtime CPU usage on the main thread, improving responsiveness.

Safety: Non-disruptive changes that maintain existing functionality while enhancing code readability and scalability.

Example

Before:

if parkingState == "reserved" { handleReservation() }

After:

enum ParkingState: String { case reserved, available }

let actions: [ParkingState: () -> Void] = [.reserved: handleReservation]

if let state = ParkingState(rawValue: parkingState) { actions[state]?() }

Conclusion: This optimization is a high-impact improvement for SeneParking.

Code changes in ParkingLotDetaill image

Changes in ParkingReservationManager image

Changes in TimeSelectionView image

c. Post-Optimization Performance Evaluation

Overall Scenario Duration:

Pre-Optimization Duration: The scenario took significant time to complete due to heavy string comparisons, redundant network calls, and inefficient memory usage.

Post-Optimization Duration: The scenario was almost twice as fast post-optimization. The improved performance is primarily due to reduced CPU usage (from string handling optimizations), faster network calls (by caching availability), and more efficient memory management.

  1. CPU Utilization:

After applying the optimizations, CPU usage on the main thread has significantly decreased. The removal of raw string comparisons, replaced by enums, reduced the reliance on strcmp and other string-handling operations, leading to faster execution. Background threading for network requests further reduced CPU strain on the main thread, improving app responsiveness.

  1. Memory Allocations:

Transient memory usage has been notably reduced, with a decrease in temporary memory allocations, particularly during network operations and UI updates. Caching availability results and offloading tasks to background threads helped reduce peak memory usage. Persistent memory usage remains stable, indicating improved memory management without introducing new issues.

  1. Leaks and GPU:

No memory leaks were detected, confirming continued effective use of ARC. While GPU usage was still not explicitly recorded, the optimization of CPU-bound tasks, especially for UI rendering and animations, likely allowed the system to leverage GPU resources more effectively, resulting in smoother animations and transitions.

  1. Performance Bottlenecks:

The main performance bottlenecks related to dynamic linking and string operations were effectively addressed. With string operations optimized via enums and heavy tasks offloaded to background threads, the app now performs faster with lower initialization times and smoother UI transitions, reducing the impact of animation-related memory spikes.

Conclusion: Post-optimization, SeneParking performs significantly better with reduced CPU usage, optimized memory management, and faster overall processing. The improvements were especially evident in network tasks, UI responsiveness, and animation smoothness, contributing to a better user experience.

3. Final List of Implemented Features

a. Sprint 2:

Map with real-time location

  • Function: A blue dot will show the user current location in real-time, working with the mobile device location sensors.
  • BQ: Do we have real-time information on the user’s location?
  • Answer: Yes, this functionality identifies the user's exact location and displays nearby parking lots on the map, improving the overall parking experience helping him locate himself in the map and nearby parking spots.

Detailed information for Santo Domingo (SD) parking lots

  • Function: Provide detailed information on the status of parking spots in the SD, this includes: availability, price and additional services.
  • BQ: Do we have real-time information on the user’s location?
  • Answer: Yes, with this, we can use his location and elaborate based on his context, using real-time location in the SD parking lot and suggest parking spots, we may even include EV spots availability withing the SD.

Smart Feature: Automated License Plate Recognition for Seamless Parking Access and Payment

  • Function: This feature integrates advanced license plate recognition technology at parking lot entrances and exits. When a car approaches the entrance, the system quickly scans and recognizes the license plate, automatically opening the barrier for registered users. Upon exit, the system again recognizes the plate, calculates the parking duration, and automatically charges the user's linked account based on the time spent.
  • BQ: What percentage of users have clicked on the license plate recognition beta feature for automated entry?
  • Answer: This business question helps us gauge user interest and adoption of the new license plate recognition feature. A high percentage of clicks indicates strong user interest, suggesting that the feature is addressing a real need. For example, if 75% of users have clicked on the beta feature, it shows a high level of curiosity and potential adoption, indicating that we should prioritize fully implementing and refining this feature.
  • Value Addition: This smart feature enhances the user experience by providing a frictionless, contactless parking process. It eliminates the need for physical tickets or access cards, reducing the potential for lost tickets or forgotten payments. The automatic calculation and charging based on actual parking time ensure fair and transparent billing. Moreover, the system can provide valuable data on parking patterns and usage, allowing for more efficient management of parking resources and potentially informing future expansion decisions.

Authentication views

  • Function: Login and registration views, enabling users to authenticate and securely use the functions withing the app.
  • BQ: Which parking-related feature (spot reservation, real-time availability, or navigation assistance) is used most frequently by our users on a weekly basis?
  • Answer: Authentication will allow us to track behaviors and analyze the features the registered user used. That way we can know what feature is most/least used.

A pin for SD parking lots on Google Maps

  • Function: Displays a pin in Google Maps that indicates the location of the available parking spots in the SD parking lot. Given that it is a parking lot with spots for electronic vehicles it is shown in blue. Parking lots without EV spots are shown in green and full parking lots are shown in red.
  • BQ: Do we have real-time information on the user’s location?
  • Answer: Yes, as we have the users location, we can display with the red dots only those nearby available parking spots, helping him to successfully and effectively park.

Blue pin for EV parking lots

  • Function: Displays a green pin in Google Maps that indicates the location of the available EV parking spots in the SD parking lot.
  • BQ: Do we have information on what parking lots have spots available for EV use?
  • Answer: Yes, this feature helps EV users identify nearby available spots. Getting rid of the time it takes to locate one.

b. Sprint 3:

Parking Lot Registration Feature in SeneParking

Purpose

The Parking Lot Registration feature allows parking lot owners to add their parking lot information directly to the SeneParking system. This information includes essential details such as the name, coordinates, availability, EV spots, rates, and operating hours. This feature aims to keep parking information accurate and updated, ultimately improving user experience by providing real-time data.

Implementation Overview

The feature is implemented in the RegisterParkingLotView, a dedicated SwiftUI view that owners can access via the "I'm a Parking Lot Owner" button on the SignInView. It uses Firestore as the backend to store and manage the parking lot data.

Feature Details

  1. Form Structure: The form in the RegisterParkingLotView includes the following input fields:

    • Parking Lot Name: Text field for identifying the parking lot.
    • Fare per Day: Number input field to specify daily rates.
    • Open and Close Time: Text fields that accept time in "hh:mmam" or "hh:mmpm" format.
    • Available Spots and EV Spots: Number fields for standard and EV spots, indicating parking capacity.
    • Coordinates (Latitude and Longitude): Number fields for the parking lot's geographic location.
  2. Validation: Each input field has validations that ensure:

    • All required fields are completed.
    • Proper formats are followed (e.g., time format for open and close hours).
    • Data types are appropriate (e.g., integers for available spots and fare). If a field contains invalid input, a descriptive error message appears below that specific field, helping users resolve issues efficiently.
  3. Data Submission: Upon successful validation, the form sends a POST request to Firestore, creating a new entry in the database. The parking lot information is then accessible within the app's map view for end-users.

  4. Error Handling: If registration fails, users see specific error messages detailing what went wrong. For instance, if network issues prevent saving to Firestore, a network-related error message appears, ensuring users understand the problem without ambiguity.

User Flow

  1. Accessing the Feature: After signing in, owners navigate to the registration form.
  2. Inputting Details: Owners complete the form with their parking lot information.
  3. Validating and Submitting: If the data is valid, the form submits to Firestore; otherwise, targeted error messages guide the owner to correct any issues.
  4. Confirmation: On success, a confirmation message appears, and the parking lot becomes visible on the map for users.

This feature is built to be adaptable across platforms and could be similarly implemented in Android (Kotlin), ensuring a seamless experience for parking lot owners regardless of device type.

Parking Lot Reservation Feature in SeneParking

Purpose

The Parking Lot Reservation feature allows parking users to book a parking spot on the SeneParking app. This information includes essential details such as the name, coordinates, availability, EV spots, rates, and operating hours for the chosen parking spot. This feature aims to keep parking information accurate and updated, ultimately improving user experience by providing real-time data.

Implementation Overview

The feature is implemented in the ReserveParkingLotView, a dedicated SwiftUI view that users can access via the parking lot detail view.

Feature Details

  1. Form Structure: The form in the ReserveParkingSpotView includes the following input fields:

    • User ID: Hidden field that captures the user's identifier for reservation tracking.
    • Parking Lot ID: Hidden field that identifies the specific parking lot for the reservation.
    • Spot Type: Dropdown selection for choosing between standard and EV spots.
    • Reservation Date and Time: Date and time pickers that allow users to set their desired reservation period, with time fields in "hh:mmam" or "hh:mmpm" format.
    • Duration: Number input field for specifying the reservation length in hours.
  2. Validation: Each input field has validations to ensure:

    • All required fields are completed accurately.
    • Proper formats are followed (e.g., time format for reservation start and end times).
    • The reservation duration does not exceed the parking lot's operating hours. If any field contains invalid input, a descriptive error message appears below that specific field, guiding users in resolving issues quickly.
  3. Data Submission: Upon successful validation, the form sends a POST request to Firestore, creating a new reservation entry in the database. The system checks for spot availability in real-time, ensuring concurrent requests can be handled without double-booking spots.

  4. Error Handling: If the reservation fails, users receive specific error messages that explain the issue. For example, if a spot becomes unavailable during submission due to concurrent requests, an availability error message appears, prompting the user to select a new time or spot.

User Flow

  1. Accessing the Feature: After logging in, users navigate to the spot reservation form.
  2. Inputting Details: Users complete the form with their reservation details, including selecting the parking spot type, date, and time.
  3. Validating and Submitting: If the data is valid, the reservation is submitted to Firestore, with real-time availability checks to prevent double-booking. Otherwise, targeted error messages guide the user in correcting any issues.
  4. Confirmation: Upon successful reservation, a confirmation message appears, and the spot is marked as reserved for the specified time, visible on the app's map view.

This feature is built to support high concurrency, ensuring accurate spot tracking even with simultaneous requests, and can be implemented similarly across platforms like Android (Kotlin) for a seamless experience across devices.

c. Sprint 4:

View My Reservations Feature

Purpose

The View My Reservations feature provides users with a comprehensive view of their parking reservations, categorized into current, upcoming, and past reservations. Users can monitor their parking activities through a clean, intuitive interface that presents their complete parking history and active sessions.

Implementation Overview

The feature is implemented in the MyReservationsView component of the application, using SwiftUI and following MVVM architecture patterns. It integrates with Firestore for data persistence and real-time updates, ensuring users always see the latest status of their reservations.

Feature Details

View Structure

The view presents reservations in three distinct sections:

  • Current Reservations: Active parking sessions
  • Upcoming Reservations: Future bookings
  • Past Reservations: Completed parking sessions
Functionality

The feature includes:

  • Real-time status updates for all reservations
  • Detailed information display (parking lot name, time, duration, cost)
  • Empty state handling with appropriate messaging
  • Filtering and sorting capabilities
Multi-threading Strategy

The implementation employs a robust concurrency approach:

  • Uses @MainActor for UI updates to ensure thread safety
  • Implements background fetch of reservation data using URLSession tasks
  • Employs DispatchQueue.main.async for UI updates while performing network operations
  • Implements a queue-based system for handling multiple concurrent data updates
Error Handling

Comprehensive error management includes:

  • Network error detection and user notification
  • Graceful degradation during connectivity issues
  • Clear error messaging for failed data fetches
  • Automatic retry mechanisms for failed operations

Cancel Reservation Feature

Purpose

The Cancel Reservation feature enables users to modify their parking plans flexibly by cancelling upcoming reservations. It provides a straightforward process for managing bookings while ensuring proper system updates and user notification.

Implementation Overview

The cancellation functionality is implemented within the MyReservationsView as a core feature, utilizing Swift's latest concurrency features for reliable transaction processing. It maintains consistent state across the application while handling cancellation requests.

Feature Details

Functionality

The feature includes:

  • One-click cancellation for upcoming reservations
  • Confirmation dialogs to prevent accidental cancellations
  • Real-time status updates after cancellation
  • Automatic refund initiation when applicable
Multi-threading Strategy

The cancellation system implements:

  • Utilizes Swift's structured concurrency with async/await for cancellation operations
  • Implements atomic transactions to prevent partial cancellations
  • Manages concurrent cancellation requests through a queue system
  • Ensures database consistency through transaction locks
Error Handling

The cancellation error management includes:

  • Validation checks before cancellation operations
  • Timeout handling for long-running cancellation requests
  • Rollback mechanisms for failed cancellations
  • User notification for cancellation status
  • Recovery procedures for interrupted operations

Payment Feature

Purpose

The Payment feature provides a secure and efficient payment processing system for parking reservations, supporting multiple payment methods (credit/debit cards, Nequi, Daviplata) and maintaining a history of transactions. It ensures a smooth payment experience while maintaining strict security standards and providing offline capabilities.

Implementation Overview

The feature is implemented through the PaymentView and supported by the PaymentDataManager singleton, using SwiftUI and following MVVM architecture patterns. It handles payment processing, validation, and history management while implementing a robust local storage strategy for enhanced user experience.

Feature Details

View Structure

The interface consists of three main sections:

  • Payment Summary: Displays reservation details and total amount
  • Payment Method Selection: Supports cards and digital payment platforms
  • Dynamic Payment Form: Adapts based on selected payment method with real-time validation
Local Storage Strategy

The feature implements a sophisticated local storage approach using PaymentDataManager:

  • Cached Payment Methods:

    • Stores last four digits of previously used cards
    • Saves cardholder names for quick refill
    • Maintains default payment method preferences
    • Implements automatic cleanup for old payment methods
  • Transaction History:

    • Caches last 10 transactions locally
    • Stores basic transaction metadata (amount, date, parking lot)
    • Implements size-limited storage with FIFO eviction
    • Maintains separate offline transaction queue
  • Security Measures:

    • Never stores complete card numbers
    • Encrypts sensitive payment data
    • Implements secure data clearing
    • Uses keychain for sensitive information
Functionality

The feature includes:

  • Real-time payment validation
  • Multiple payment method support
  • Transaction history viewing
  • Saved payment method management
  • Auto-fill capabilities for returning users
  • Offline transaction queuing
Error Handling

Comprehensive error management includes:

  • Payment validation errors
  • Network transaction failures
  • Concurrent payment processing
  • Storage capacity management
  • Data corruption recovery
  • Timeout handling

Security Considerations

The implementation includes:

  • PCI compliance measures
  • Secure data transmission
  • Encrypted local storage
  • Automatic data expiration
  • Secure payment method handling

Manage Parking Lot Feature

Purpose

The Manage Parking Lot feature provides parking lot owners with a comprehensive interface to monitor and update their parking facilities' information. It implements efficient caching mechanisms to handle facility identifiers and ensure smooth operation even with complex database references.

Implementation Overview

The feature is implemented through multiple components including the ParkingLotRegistrationView and supported by the OfflineDataManager singleton. It follows MVVM architecture patterns and implements a robust caching system for handling complex database identifiers and facility data.

Feature Details

Caching Strategy

The feature implements a sophisticated caching system through OfflineDataManager:

  • Identifier Caching:

    • Stores complex Firestore parking lot IDs (e.g., "jed87hwubc87n") locally
    • Maps readable names to complex IDs for quick lookup
    • Implements automatic validation of cached IDs
    • Maintains last access timestamp for cache management
  • Data Structure:

struct CachedParkingLot {
    let id: String           // Complex Firestore ID
    let readableName: String // User-friendly identifier
    let lastAccessed: Date   // For cache management
    let expiresAt: Date     // Cache validity period
}
  • Cache Management:
    • Implements LRU (Least Recently Used) eviction policy
    • Maintains maximum of 10 most recently accessed lots
    • Automatic cleanup of expired cache entries
    • Background synchronization of cached data
View Structure

The management interface includes:

  • Dashboard with key metrics
  • Real-time spot availability management
  • Operating hours configuration
  • Pricing adjustment controls
  • Historical data visualization
Functionality

Core features include:

  • Real-time spot status updates
  • Operating hours modification
  • Pricing adjustments
  • Analytics dashboard
  • Revenue tracking
  • Occupancy monitoring
Error Handling

Comprehensive error management:

  • Cache miss handling
  • ID validation errors
  • Network synchronization failures
  • Concurrent modification conflicts
  • Data inconsistency resolution
  • Automatic error recovery

Usage Example

// Example of ID caching in use
class ParkingLotManager {
    func loadParkingLot(name: String) -> ParkingLot? {
        // First check local cache for complex ID
        if let cachedId = OfflineDataManager.shared.getCachedParkingLotId(forName: name) {
            return fetchParkingLotDetails(id: cachedId)
        }
        
        // If not in cache, fetch from network and cache
        let parkingLot = fetchFromNetwork(name: name)
        if let lot = parkingLot {
            OfflineDataManager.shared.cacheParkingLotId(lot.id, forName: name)
        }
        return parkingLot
    }
}

Security Considerations

The implementation ensures:

  • Secure storage of facility data
  • Access control validation
  • Audit logging of changes
  • Data integrity checks

4. Final List of Implemented Views

Authentication Views

SignInView: Serves as the main entry point to the application. Features a clean interface with fields for mobile number and password, along with options for password recovery and new account creation. Includes real-time validation, secure credential handling, and a special access path for parking lot owners. The view maintains session state using UserDefaults and provides clear feedback for authentication errors.

SignUpView: Handles new user registration with a comprehensive form collecting essential user information. Implements real-time field validation for email format, mobile number length, and password strength. Features age verification through date of birth and special validation for Uniandes student codes. Includes offline support by queuing registration requests when connectivity is unavailable.

ForgotPasswordView: Provides password recovery functionality through email or mobile number verification. Features a simple, focused interface that guides users through the recovery process with clear instructions and feedback. Implements input validation and displays appropriate success/error messages while maintaining the app's visual consistency.

Core Features' Views

MainMapView: The central navigation hub of the application, displaying an interactive map with real-time parking spot availability. Implements custom map annotations with color-coding for different parking types (regular/EV), includes a toggle for EV-only spots, and provides real-time location tracking. Features offline support through local caching of parking lot data and visual indicators for connectivity status.

ParkingLotDetailView: Provides comprehensive information about a selected parking lot, including availability, pricing, and operating hours. Features an interactive map section, real-time spot availability updates, and a reservation system with time slot selection. Implements notification toggles for lot availability and supports both online and offline viewing of basic lot information.

TimeSelectionView: Handles parking duration selection with an intuitive interface for choosing start time and duration. Features a graphical calendar picker, predefined duration options, and custom duration input. Implements real-time availability checking and provides clear feedback about selected time slots and pricing.

MyReservationsView: Displays user's parking history categorized into current, upcoming, and past reservations. Features reservation management capabilities including cancellation of upcoming bookings. Implements offline support for viewing reservation history and queues cancellation requests when offline.

PaymentView: Handles the final step of the parking reservation process. Consists of three main sections: payment summary card, payment method selector, and dynamic payment form. Features real-time card validation, digital payment integration, and secure payment processing. Maintains transaction history and supports offline receipt generation.

Parking Lot Management Views

ParkingLotRegistrationView: Enables parking lot owners to register their facilities in the system. Features comprehensive form validation for all required fields, including geographic coordinates, operating hours, and spot availability. Implements image upload for lot photos and supports offline data collection with later synchronization.

LicensePlateRecognitionView: Implements camera-based license plate recognition for automated entry/exit management. Features real-time image processing, plate number extraction, and immediate feedback. Includes manual input fallback and maintains a history of recognized plates for quick future reference.

ParkingManagerView: Provides parking lot owners with real-time management capabilities for their facilities. Features live updates of spot availability, pricing adjustments, and operating hours modifications. Includes analytics dashboard for occupancy rates and revenue tracking. Implements offline editing capabilities with synchronization upon connectivity restoration.

Eventual Connectivity (ECn) Strategies

Each feature's ECn strategies ensure a smooth user experience regardless of network conditions, with appropriate feedback and data consistency mechanisms in place.

My Reservations Feature

  • Caches reservation data locally using OfflineDataManager
  • Implements offline queue for cancellation requests
  • Synchronizes data automatically when connectivity is restored
  • Provides visual indicators for offline mode
  • Maintains reservation state consistency across offline periods

Manage Parking Lot Feature

  • Stores parking lot data locally for offline access
  • Implements background sync when connectivity is available
  • Uses local storage for search history and frequently accessed lots
  • Provides offline-first experience with cached data
  • Updates UI to reflect connectivity status

Payment Feature

  • Queues payment transactions when offline
  • Stores payment details securely for retry
  • Implements robust error recovery for interrupted payments
  • Maintains transaction logs for reconciliation
  • Provides offline receipt generation
  • Synchronizes payment status when connectivity is restored

5. Final List of Implemented Business Questions

a. Sprint 2:

  • Type 1:

    What is the average response time for real-time parking spot availability updates, and does it exceed our target of 1 second?

  • Type 2:

    Do we have information on the cheapest spots to park? Yes, then we can recommend a user park on one of those spots.

    Do we have real-time information on the user’s location? Yes, then we can recommend a user park on one of those nearby spots.

    Do we have information on what parking lots have spots available for EV use? Yes, then we can recommend an EV user park on one of those spots.

    What percentage of users activate the in-app navigation feature when approaching the campus parking areas? Greater than 75%, then we can recommend the routes for the in-app navigation based on the insight on traffic gathered from other users’ phones.

    On average, what parking payment option is used the most by the users of the app? Parking payment option XXXX, then we can arrange the parking payment option list to give more visibility to option XXXX.

  • Type 3:

    Which parking-related feature (spot reservation, real-time availability, or navigation assistance) is used most frequently by our users on a weekly basis?

    What percentage of users have clicked on the license plate recognition beta feature for automated entry?

    Is the usage frequency of parking spots in the Santodomingo building through our app exceeding the parking lot's capacity? Consequently, should we expand to nearby independent parking lots?

  • Type 4:

    We are a business that collects real-time position data about our users. What are the geographical locations within the city where many students go through at a given time while commuting? Those locations are X, Y, and Z, then we can sell this information to marketing agencies that are interested in advertising products to students.

  • Type 5:

    How does the implementation of our real-time spot detection system impact both the app's performance metrics (such as server response time and data accuracy) and user behavior patterns (like frequency of app usage and time spent searching for parking)?

b. Sprint 3:

  • Type: Combination (Type 5: Combination of Type 2 and Type 4)

    How can we improve both user satisfaction and parking space utilization by implementing a real-time reservation system that processes multiple validations concurrently?

    It focuses on enhancing the user experience through a real-time system (concurrent validations improve reliability and reduce errors), while also optimizing parking space utilization through better data handling.

  • Type: Combination (Type 5: Combination of Type 2 and Type 4)

    How can the app improve user satisfaction and optimize parking space usage by implementing a real-time, concurrent reservation system with validations that ensure availability and prevent double-booking?

    Looks to enhance user satisfaction (Type 2) by ensuring reservations are accurate and reliable. It also deals with data-driven optimization (Type 4), focusing on how concurrent validations help manage parking space availability efficiently, preventing double-bookings and improving overall system performance.

c. Sprint 4:

  • Type 1: App's Telemetry

    What is the average CPU usage of the app when performing its usual operations?

    This will help evaluate app performance, understanding how it behaves when correctly used by our users.

  • Type 2: Direct User Experience Improvement

    Can we provide our users with reliable and accurate information regarding prices and how they compare to other options in their area of interest?

    This directly analyzes how capable our app is of providing users with really important information.

  • Type 4: Benefits from Data

    What are the peak usage hours for the parking reservation feature, and how can this data help optimize parking spot allocation?

    This data can inform capacity planning and promotional strategies, ensuring efficient parking space utilization and revenue growth

6. Ethics Video

Link to our video