Built to order

Parking Spot Saver Android App

SpotHold is an Android app for the most annoying part of city parking — the spot you saw is gone by the time you circle back. Open the live lot map, tap a free bay, and the app holds it for 15 minutes while you drive in, with a countdown ticking on screen. Park, tap check-in, and the hold converts to a parked session; running late? One 10-minute extension is allowed. One active hold per user keeps the system fair at peak hours. It ships with complete Kotlin source, backend schema, documentation and the viva kit. Suitable for B.E./B.Tech final-year projects in Computer Science, IT and mobile

Parking Spot Saver Android App — project thumbnail preview
More project photos (2)

The problem

In mall and office parking lots the failure mode is always the same: you spot a free bay on the map, drive toward it, and someone physically closer takes it. Existing parking apps show availability but can't reserve — the map and the ground truth diverge in the two minutes that matter. SpotHold closes that gap with a hold, not just a map: tapping a free spot locks it for 15 minutes, visible to every other user as "held" so nobody is routed to it. The countdown is honest — arrive before it ends or the spot releases automatically. Check-in on arrival converts the hold into a parked session; a single 10-minute extension covers traffic-light delays. Zones are tiered by walking distance (near elevator vs open deck) with live free counts, so drivers pick their trade-off with open eyes. Fairness is structural: one active hold per user, holds are free, and the history screen records holds kept, completed and expired. The build is Kotlin with a Firebase realtime backend — holds are atomic transactions, and the lot map updates live for everyone.

How it works

  1. The lot operator maps bays into zones; each bay carries its state (free/held/occupied) in the realtime backend.
  2. The driver opens the zone map and sees live free counts per zone plus per-bay states.
  3. Tapping a free bay creates a hold as an atomic transaction — the bay flips to "held" for every user instantly.
  4. The countdown (15:00) ticks on the spot screen; the driver navigates to the bay.
  5. On parking, the driver taps check-in; the hold converts to a parked session.
  6. If delayed, the driver uses the single 10-minute extension; at zero the bay auto-releases.
  7. The history screen logs the outcome, and the fairness rule blocks a second concurrent hold.

Tech stack:

  • Kotlin (Android app language)
  • Android Studio (build & layout tooling)
  • Firebase Realtime Database (live bay states + hold transactions)
  • Firebase Authentication (driver sign-in)
  • Material Design 3 components
  • MVVM architecture (ViewModel + StateFlow)
  • Firebase Cloud Messaging (hold-expiry warnings)
  • Git version control
Parameter Value
Platform Android 8.0 (API 26) and above (design target)
Hold window 15 minutes (configurable)
Extension One × 10 minutes per hold (configurable)
Active holds 1 per user (fairness rule)
Hold transaction Atomic check-and-lock on the bay record
Lot size 60 bays/zone in the reference layout (configurable)
Expiry alerts Push warning at 5 and 1 minute remaining
Build Single APK via Android Studio

Project features

  • [Live lot map] Zone-wise bay grid (A/B/C) with free, held and occupied states updating in real time.
  • [15-minute spot hold] Tap any free bay to lock it while you drive in — free, with a live countdown.
  • [Check-in on arrival] One tap converts the hold into a parked session; the bay shows occupied to others.
  • [One-time 10-minute extension] A single extension covers delays; after that the spot releases fairly.
  • [Auto-release] Holds expire automatically at zero — no manual cleanup, no permanently "held" bays.
  • [Zone tiers] Zones carry walking-distance notes and live free counts (near elevator vs covered vs open deck).
  • [Hold history] Every hold recorded: completed, released, expired — with timestamps.
  • [Fairness rules] One active hold per user; holds are free so the system can't be gamed by bulk-holding.

What is included

  • Complete Kotlin Android app source code
  • Firebase backend schema and transaction rules (bay states, holds, history)
  • Lot map, spot detail, hold timer and history screens as designed
  • Check-in / extend / release flows
  • Hold-expiry push notifications
  • Project report PDF (problem, architecture, transaction design, fairness model, testing)
  • PPT presentation for final review
  • Viva Q&A preparation document (realtime transactions, countdown UX, FCM)

Limitations & prerequisites

  • The hold is a social contract backed by the map — the app cannot physically block another car from taking the bay; lots pair it with bay signage.
  • Bay states need the operator's data feed (manual, sensor or camera); the app does not detect occupancy itself as shipped.
  • GPS guidance to the bay is coarse (±5–10 m); in multi-level lots the driver follows level signage.
  • Parking fee payment at exit is out of scope — the hold itself is free and payment-agnostic.
  • One lot per backend project — multi-lot city networks are future scope.

Frequently Asked Questions

How is a hold different from a booking?

A booking reserves far ahead and usually costs money; a hold is free, short (15 min) and exists only to cover the drive-in gap — it's closer to "saving your place in the queue."

What stops someone holding spots all day?

Three things: one active hold per user, a single 10-minute extension, and automatic expiry — the rules are enforced in backend transactions, not in the UI.

What if two drivers tap the same free bay?

The hold is an atomic transaction that re-checks the bay state; only the first write wins, the other driver sees it flip to held.

Do I need internet in the basement lot?

The map caches the last-known layout for viewing; creating or releasing a hold needs connectivity so the transaction is authoritative.

What happens when my hold expires?

The bay releases to free for everyone and your history records it as expired; repeated expiries can be rate-limited by the operator.

Is this project suitable for a final-year project?

Yes — for Computer Science, IT and mobile development programs. It demonstrates realtime state sync, atomic transactions, countdown-driven UX, push notifications and a fairness-constrained design. Suitable for B.E./B.Tech final-year projects in Computer Science, IT and mobile application development.

Components & software requirements
  • Kotlin (Android app language)
  • Android Studio (build & layout tooling)
  • Firebase Realtime Database (live bay states + hold transactions)
  • Firebase Authentication (driver sign-in)
  • Material Design 3 components
  • MVVM architecture (ViewModel + StateFlow)
  • Firebase Cloud Messaging (hold-expiry warnings)
  • Git version control
Delivery information

Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.

Support terms

Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.

Download abstract (PDF)

Related guides

All guides
Blueprint-style technical illustration of a smartphone with a shield badge, surrounded by camera, photo and location icons connected by circuit traces.Android development students whose apps use the camera, photos, location or notifications and who need their projects to work correctly on current Android versions.

Android Runtime Permissions in 2026: Photo Picker, Partial Access and Foreground Services

Android's permission model has changed in nearly every recent release, and old tutorials now fail silently on modern phones. This guide covers the current model: runtime request flow, the no-permission photo picker, Android 14 partial media access, notification permission, and foreground-service types — with a migration checklist for older student apps.

Read guide
Illustration of an Android phone with background task scheduling diagram showing workers, constraints, and periodic sync arrows.B.E./B.Tech Computer Science and IT students building Android apps that need reliable background work for academic and final-year projects

WorkManager for Background Tasks

Background sync that dies overnight? Learn WorkManager: the right API for guaranteed background work on modern Android. Covers one-time and periodic requests, constraints, chaining, retry/backoff, passing data, observing from UI, and debugging workers delayed by Doze or OEM battery optimizers.

Read guide
Illustration of a smartphone showing a Jetpack Compose UI with composable function blocks and state flow arrows connecting them.B.E./B.Tech Computer Science and IT students building Android apps for academic and final-year projects

Jetpack Compose Basics for Students

Learn Jetpack Compose from zero: the declarative UI mental model (UI as a function of state), composable function rules, state management with remember and hoisting, Column/Row/Box/LazyColumn layouts, Material 3 theming, navigation, and the mistakes every beginner makes.

Read guide
Get a quotation