Design a calendar Application (similar like Google Calendar)
MediumLet's refine the "Design a Calendar Application" problem. Imagine we are building a calendar service similar to Google Calendar, but focusing on the core domain model and the interactions between its components. This means we won't be dealing with distributed systems concerns like load balancing or database sharding directly (unless they affect our class design choices – e.g., a caching mechanism).
The heart of the system revolves around users creating and managing events, inviting attendees, and handling notifications. Events can be one-time occurrences or recurring schedules. We need to handle time zones correctly and ensure that event conflicts are detected. The application should provide ways to view events based on different criteria (daily, weekly, monthly).
We need to build a robust and extensible system that can handle future requirements like resource booking or integration with other services. This requires careful consideration of object-oriented principles, design patterns, and concurrency management.
Requirements
Think like an Architect
Before revealing the requirements, imagine you're in the interview right now."How would you clarify the scope with your interviewer?"