# 89 — Calendar reminders overhaul ## Goal Replace the single "Remind me 30 min before" checkbox with multiple reminders, presets, and custom offsets. ## What we decided - Store multiple reminder rows per calendar event in the generic `reminders` table (drop one-per-entity unique constraint). - Offsets are minutes before event start; presets + custom value/unit in UI. - Per-user default offsets live on `users.default_event_reminder_offsets` (jsonb, default `[30]`). - Notes/garden keep single-reminder behavior via delete-then-insert in `scheduleReminder`. ## Depends on - 41 (reminders engine) ## Scope - Migration: drop `reminders_entity_unique`, add `offset_minutes`, add user default column. - `_core/reminders.ts`: `syncRemindersForEntity`, refactor `scheduleReminder`. - Shared `ReminderPicker` component + offset helpers. - Calendar create/edit + quick-add dialogs; sync reminders on create/update/delete. - Optional: settings field for default reminder offsets. ## Out of scope - Recurring reminders, snooze. ## Acceptance criteria - [x] Users can add/remove multiple reminders on an event - [x] Preset list and custom offset both work - [x] Reminders fire via existing notification bus - [x] Per-user default reminder preferences (stored + applied on new events) ## Notes - Gitea: [ginnoir/famapp#28](https://gitea.ginnoir.com/ginnoir/famapp/issues/28)