Notifications & real-time
A top-bar bell shows notifications with a live unread badge, kept in sync across every device in real time over SignalR.

For users
Everything updates in real time — a new notification, or marking one read on another device, appears instantly with no refresh. New arrivals also raise a toast, and when the tab is in the background a user can opt into OS-level browser notifications.
The bell's dropdown lists recent items with Mark all read and See all; the full /notifications page filters by All / Unread, pages through history, and lets you mark items read/unread or dismiss them — with designed loading, empty, and error states throughout.
Per-user preferences live on the profile under Notifications: toggle email copies of each notification (sent off the request path) and browser notifications. Old notifications are cleaned up automatically after 90 days.
For developers
One call persists the notification, pushes it over the hub, and (per the user's setting) queues the email:
await _notifications.NotifyAsync(userId, new NotificationPayload(
title: "Order shipped",
body: $"Order {order.Number} is on its way.",
link: $"/sales/orders/{order.Id}"));In Development there's a Send test button on the /notifications page to fire a sample to yourself.
Community edition
Real-time notifications are a Pro feature. See Editions.