PRD: Device signal & notifications
| Module | Device | PRD ID | PRD-MON-001 |
| Status | Ready to dev | FEAT | MON |
| Epic | — | Plane | BANA-1540 |
| Date | 2026-07-17 | Version | v0.2 |
| Packages | @nx/commerce · @nx/signal | URD | MON |
| Surface | Backend | ||
| Owner | Phát Nguyễn | ||
A server-side real-time notification backbone
A server-side activity-notification backbone: a worker resolves the right recipients within an organizer/merchant scope, persists a notification, and pushes it live to connected clients - with a fetch / mark-read interface behind the bell UI. Two caveats today: the ingest consumer is built but no producer feeds it, so the pipeline isn't exercised end-to-end; and the one live use case so far (inquiry-submitted) runs over a separate outreach WebSocket that bypasses the pipeline and persists nothing.
The problem this increment solves
Device Health Monitoring & Notifications (MON) needs the platform to capture activity and surface it to administrators in near real time. Today there is no server-side notification backbone: events happen across the platform, but nothing fans them out to the right users or pushes them to a live UI, so administrators cannot watch activity as it happens.
This increment builds that backbone in the real-time signal layer - an end-to-end pipeline (ingest event → worker → persisted record → live push) with recipient resolution scoped to an organizer/merchant and a stable real-time transport. Monitoring and activity surfacing ride on that transport; heartbeat / health-status reporting (URD-MON-001/002) and remote device actions (URD-MON-004/005) are tracked separately. This is also the channel PRD-DEV-001's fault-notification alert would ride on, once it gets a first producer.