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