Problem statement
Design the object model and public APIs for the recurrence engine a calendar uses to turn a compact repeating-event rule into the concrete occurrences that fall inside a queried date window, honoring per-occurrence overrides and cancellations.
Operating context. An event carries a recurrence rule: a frequency (daily / weekly / monthly), an interval (every 2 weeks), optional by-day constraints (Mon, Wed), and an end condition (until a date, or after N occurrences). The organizer can override a single occurrence (move the third Tuesday's time) or cancel one (skip this week). Given a window [from, to), the engine yields the ordered concrete occurrences with overrides applied and cancellations removed. Read-heavy, single-process, one time zone per event.
Out of scope. The storage engine, time-zone / DST conversion internals (assume a single fixed zone per event), the REST surface, free / busy conflict detection, and invitation delivery.
What to produce. The class hierarchy (recurrence rule, frequency strategy, override / exception set, occurrence, expander service), each class's public API, and how an expansion request flows through them. Be explicit about: how the rule generates occurrences lazily so an unbounded 'forever' rule is safe to query for a bounded window, how each frequency is a pluggable strategy, and how overrides and cancellations layer on top of the base sequence.
Requirements
This assessment is a Premium feature.
The statement above is free to read. The functional and non-functional requirements, and the graded canvas that scores your design against them, come with Premium.
Topics
- System Design LLD
- Oop Solid
- Patterns Strategy
- Patterns Iterator
- Algorithms Date-Recurrence