# notification (frontend) Bell-icon dropdown and real-time SSE connection for in-app notifications. ## What this domain owns Components: `NotificationBell.svelte`, `NotificationDropdown.svelte`. Utilities: `notifications.svelte.ts` (Svelte 5 reactive store), `notifications.ts` (API helpers). ## What this domain does NOT own - SSE infrastructure — the backend's `SseEmitterRegistry` manages the server-side emitter. The frontend establishes one `EventSource` connection per session. Connection management lives in `notifications.svelte.ts`. - Notification content rendering — notification payloads contain a `contextUrl`; the frontend navigates there on click. ## Key design: SSE connection The SSE path is **backend → browser directly** (not proxied through SvelteKit SSR). The `EventSource` connects to `/api/notifications/stream`. On receive, the reactive store updates the unread count and the bell dropdown in real time. ``` Backend SseEmitterRegistry → /api/notifications/stream → EventSource in browser ``` ## Key components | Component | Used in | Notes | | ----------------------------- | ----------------------------- | --------------------------------------------------------- | | `NotificationBell.svelte` | global nav (`+layout.svelte`) | Bell icon with unread badge; opens `NotificationDropdown` | | `NotificationDropdown.svelte` | global nav | Scrollable list of recent notifications with mark-read | ## Cross-domain imports - `shared/primitives/` — icon, button primitives only ## Backend counterpart `backend/src/main/java/org/raddatz/familienarchiv/notification/README.md`