# Personal user notifications

> A live personal inbox, localized email, daily digests, quiet hours and user-controlled delivery preferences.

## A personal inbox alongside operator alerts

Personal notifications are product messages addressed to users. They are separate from
[admin notifications](/docs/notifications), which tell operators about registrations, billing and
system events. The app bell combines both unread counts when a user has access to both.

Users read personal messages at `/notifications` and set delivery preferences at
`/settings/notifications`. Server-sent events update badges and show toasts; polling provides a
fallback. Rows can be marked read or unread and link to the relevant product surface.

## Delivery users control

The system supports immediate email, daily digests at the user's local hour, quiet hours and
per-event preferences. Inbox messages render in the request language; background emails use the
user's saved language. Duplicate messages update an occurrence count and resurface the row as
unread. Retention and delivery retries are configurable.

## Add your product events

The template ships a test event and the reusable `NotifyUserCommand` entry point. Add your own
catalog definitions for title and body templates, category, deep link, email defaults and opt-out
rules. Translate domain events into notification commands beside the feature that owns them.
Application-specific events and mute controls are yours to add.

Notifications, delivery attempts and preferences are included in data export and erasure. Keep
those paths synchronized when extending the model. The repository references are
`docs/api/user-notifications.md` and `docs/frontend/user-notifications.md`.

Scaffold with `--no-notifications` or run `scripts/remove-user-notifications.sh` to omit personal
notifications. The independent operator alert system remains installed.

## Verify

- Send a test notification with two tabs open and confirm both unread badges update.
- Change language and confirm the next inbox message and email use that locale.
- Check delivery preferences, quiet hours and digest timing with your product events.
