# Design a Mobile Bike-Share / Scooter Rental App

Source: https://www.techinterview.org/post/3233475395/mobile-system-design-bike-share-scooter-rental/
Updated: 2026-06-30 · techinterview.org

"Design Lime / Bird / Citi Bike" is a senior+ mobile system design that combines geographic discovery, IoT unlock-and-lock, real-time ride tracking, payment, and the regulated reality of city-permitted micromobility. The interview tests how you handle a hardware + software product with city-level operational constraints.

## Clarify scope

- Dockless (Bird, Lime) or docked (Citi Bike, Capital Bikeshare)?

- Bikes only, scooters only, or both?

- Subscription / membership tier?

- Multi-city or single-city?

- E-bike with battery (range / charging)?

## Vehicle discovery

- Map-centered home view with vehicle pins

- Tap a pin: details (range, ID, price)

- "Reserve" with a 10-min hold for the user to walk to it

- Filter by vehicle type, battery range

- Surge / dynamic pricing visible at the pin level

## Map rendering

- Mapbox / MapLibre / Apple Maps / Google Maps SDK

- Vector tiles for fast pan/zoom

- Vehicle pins clustered when zoomed out

- Geofences shown for no-park / slow zones

## The unlock flow

- User scans QR code on the vehicle (or enters ID)

- App requests unlock from server

- Server commands the vehicle (BLE via the app proxy, or LTE direct)

- Vehicle unlocks; ride starts

- App tracks location, speed, time

## BLE vs LTE

- With BLE proxy unlock, the phone connects to the vehicle via BLE and the app commands unlock. It works in dead-zones and is faster.

- With LTE direct, the vehicle has its own LTE and the server commands it directly. This is independent of phone signal but the vehicle needs reception.

- Most modern apps support both for reliability

## Ride tracking

- GPS samples every 5–10 seconds

- Background location with high accuracy required during ride

- Battery awareness: drop frequency on idle / parked

- Encode the path; server may use it for analytics or pricing zones

## End-of-ride

- User taps "End ride"

- App commands lock

- If in restricted zone: warn user before allowing end-ride

- Photo confirmation (regulated cities require parking-photo proof)

- Calculate fare, charge user

- Ride summary screen

## Geofences

- No-go zones (e.g., parks, sidewalks): vehicle slows or alerts

- No-park zones: cannot end ride here without penalty

- Parking zones: must end ride here (some cities)

- Server pushes zone updates to vehicles and app

## Payment

- Apple Pay / Google Pay first; saved cards as fallback

- Pre-authorize $10 hold at ride start; capture actual fare at end

- Subscription / membership: prepaid; ride deducts

- Receipt emailed and in-app

## Safety

- Helmet reminder at ride start

- Speed limits enforced via vehicle firmware

- Crash detection (sudden deceleration triggers check-in)

- Group rides (multiple vehicles to one account) increasingly common

## City compliance

- Per-city permit dictates: vehicle count, geofences, operating hours, helmet rules

- City data feeds (GBFS / MDS standards) for live vehicle and ride data

- SOC 2 / privacy compliance for shared user data

- Some cities require ride-start photos, ID verification, or insurance

## Membership / subscription

- Per-month or per-year unlimited or capped rides

- App Store / Play Store IAP integration

- Auto-renew with reminder

## Reservation and parking discovery

- "I am 5 minutes away, hold this vehicle"

- Reservation timer counts down

- If user doesn't arrive, vehicle returns to pool

- Reservation cost (some apps charge a small reservation fee)

## Notifications

- "Your reserved vehicle is around the corner"

- "You are entering a no-park zone"

- "Ride summary"

- "Bike returned" (if ended remotely / lost)

## Operations features

- Worker app for chargers / repositioners

- Battery / health monitoring per vehicle

- Real-time fleet ops dashboard

- Customer-found-issues reporting

## Privacy considerations

- Ride paths can re-identify users, so handle carefully when shared with cities (MDS standard has been controversial)

- Aggregate / anonymize before sharing

- Per-user preferences for location precision

## Edge cases interviewers love

- Vehicle goes offline mid-ride: keep tracking from app, reconcile on reconnect

- User ends ride in restricted zone: small fine + clear messaging

- BLE pair fails: fallback to LTE

- User's phone dies mid-ride: vehicle may auto-lock after timeout

- Vehicle stolen: geofence alert, cellular tracking (most have it)

## What separates senior from staff

Senior candidates draw the unlock-and-track flow. Staff candidates discuss the BLE-vs-LTE redundancy, geofence enforcement, and city-compliance integration. Principal candidates raise the multi-tenant city-permit operational reality, the dispute / fraud handling, and the privacy posture for city data sharing.

## Frequently Asked Questions

### What is GBFS / MDS?

Open standards for sharing vehicle and ride data with cities. GBFS (General Bikeshare Feed Specification) for live vehicle data; MDS (Mobility Data Specification) for ride data. Many cities require compliance.

### How do I handle two vehicles unlocked by one user?

Most apps allow it (ride buddy). Cap concurrent rides; require enrollment. Each ride tracked separately; payment per ride.

### What about helmet detection?

Bird and others tested ML detection of helmet via the unlock photo. Imperfect; not yet a standard requirement. Some cities legislate helmets; enforcement is policy + spot checks.
