Skip to content

feat: Unified notification preferences center (per-channel, per-event) #621

Description

@joelpeace48-cell

Background & current state

With multiple channels (in-app NEW-094, web push NEW-093, email #342), there's no single place for users to control what they receive where. Without a respected preference store, we risk over-notifying.

Goal

Add a unified notification preferences center: per-channel, per-event-type opt-in/out, enforced by the notification service.

Technical design

  • Preferences model: (user, event_type, channel) -> enabled. The notification service checks preferences before dispatching on any channel; sensible defaults; "unsubscribe all".
  • Frontend preferences UI grouped by event type with channel toggles.

Edge cases

  • New event types → safe default + surfaced in UI.
  • Legal/critical notices (e.g., security) → non-disableable category.
  • Conflicting defaults → documented precedence.

Task breakdown

  • Preferences model + enforcement in notification dispatch.
  • Preferences UI (event × channel matrix).
  • Non-disableable critical category.
  • Matrix tests (channel × event respected).

Acceptance criteria

  • Disabling a channel/event suppresses delivery on it; critical notices still send.

Testing & verification

  • Matrix tests asserting suppression per preference.

Out of scope

Dependencies / related

Difficulty: medium · Effort: M

Metadata

Metadata

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions