System requirements
Functional:
- car entry
- car exit
- info board
- entry and exit lanes
- parking lot with places
- areas for emergency situations
Non-Functional:
- capacity scaling
- full lot handling gracefully
- security (collision, theft...)
Capacity estimation
1 entry, 1 exit, same street, 200 places
API design
- pre entry: lot status, recommendations
- entry
- exit
- special situations
Database design
- ticket: entry time, car plate
- place: free/full, last change timestamp
- lot: aggregated view of places
- billing: ticket, parking time, amount, cc info
High-level design
- info board, mobile app before getting closer
- ticket check-in ramp
- ticket check-out ramp
- signalization aiding movement inside the lot
Request flows
1. entry: driver at the check-in requests a ticket, ramp opens upon ticket issued
2. place search: signalization aids place finding
3. exit: driver at the check-out uses ticket or car plates, pays either before exit or at the check-out ramp, which is eventually open
4. special situations: lot management called for help
Detailed component design
- check-in and check-out ramps supported foe maintenance
- info board, mobile app integrated with city parking infrastructure
- parking lot uses modular design for scaling
- alternative areas/lanes added for emergency situations
Trade offs/Tech choices
- more places may require more entries/exits
- the better the lot, the higher demand but capacity may not be scalable enough, so need for rerouting
Failure scenarios/bottlenecks
- queue in the street when the lot is full
- car stuck on a lane causes delays
Future improvements
- forecasting and rerouting based on global city information
- car plate reading for better flow