List functional requirements for the system (Ask the chat bot for hints if stuck.)...
List non-functional requirements for the system...
Estimate the scale of the system you are going to design...
parking garages come in different sizes, the largest ones usually have multiple floors.
at most can fit from 100 - 2000 cars per garage
probably at most the high range will be less than a million cars
Define what APIs are expected from the system...
/reserve
params: garage_id, start_time, end_time
returns: (spot_id, reservation_id) -> tuple
/payment
params: reservation_id
note: likely using an existing third party API to handle (Stripe, Square, etc)
/cancel
params: reservation_id
/calculate_payment
params: reservation_id
/freespots
params: garage_id, vehicle_type, time
/alllocate_spot
params: garage_id, vehicle_type, time
/create_account
params: email, password, first_name, last_name,
note add third party SSO (Google, Facebook)
/login
params: email, password
Defining the system data model early on will clarify how data will flow among different components of the system. Also you could draw an ER diagram using the diagramming tool to enhance your design...
ParkingSpots: Track spot ID, type, availability, assigned vehicle.
Vehicles: Store vehicle details and parking history.
Payments: Store payment info (amount, time).
You should identify enough components that are needed to solve the actual problem from end to end. Also remember to draw a block diagram using the diagramming tool to augment your design. If you are unfamiliar with the tool, you can simply describe your design to the chat bot and ask it to generate a starter diagram for you to modify...
Explain how the request flows from end to end in your high level design. Also you could draw a sequence diagram using the diagramming tool to enhance your explanation...
Dig deeper into 2-3 components and explain in detail how they work. For example, how well does each component scale? Any relevant algorithm or data structure you like to use for a component? Also you could draw a diagram using the diagramming tool to enhance your design...
Explain any trade offs you have made and why you made certain tech choices...
Try to discuss as many failure scenarios/bottlenecks as possible.
Database Outage:
Payment Gateway Failure:
Hardware Failures:
Server Downtime:
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?
Dynamic Pricing: Adjust rates during peak hours.
Sensors: Use IoT for spot availability tracking.
Mobile App: Pre-book spots or pay online.
EV Charging: Include charging stations.