Recurring reminders — the hidden complexity of recurrence rules
"Add a reminder every Tuesday." Easy to say. Much less simple to implement.
Recurrence Rules
TAMSIV supports four types: daily, weekly, monthly, custom. The simple case takes 10 minutes. The complex case ("the last Friday of each month") takes days.
The "31st of every month" Problem
February doesn't have 31 days. I chose automatic adjustment to the last day of the month. This is what the user intuitively expects.
Hybrid Storage
The recurrence rule is stored on the parent event. Occurrences are generated on demand. When a reminder is converted into a calendar event, a concrete occurrence is created in the database.
The UX Challenge
How to present complex rules without overwhelming the user? A progressive selector: 4 simple options by default, advanced panel as an option. Simple by default, powerful as an option. The casual user should never feel lost. The advanced user should never feel limited.