{{ __('Manage system notifications and activity feed.') }}
{{ __('Loading...') }}
{{ __('How notifications flow through this system — from sending to bell icon to acknowledged. Who sees what, when, and why.') }}
notifications table{{ __('Notifications persist in the database even after they are read — only "Clear read" deletes them. The feed paginates 15 per page.') }}
DELIVERY PIPELINE: [1] Admin submits form → NotificationCenterController::store() [2] Recipients resolved: • "all" → User::where('active', true)->get() • role-X → User::role('X')->get() [3] Laravel SystemManagementNotification dispatched per user Channels: ['database', 'broadcast'] [4] database channel → row innotificationstable [5] broadcast channel → Reverb WebSocket → bell icon updates live [6] Recipient pulls feed → GET /notification-center/api/recent # Feature flag:feature_notification_centerin Global Settings # When OFF, the menu hides for non-admins but admins still see it.
| {{ __('CAPABILITY') }} | {{ __('REQUIRED ROLE / PERMISSION') }} | {{ __('NOTES') }} |
|---|---|---|
| {{ __('Read own feed') }} | view notification center |
{{ __('Required to even open this page') }} |
| {{ __('Mark / delete own notifications') }} | view notification center |
{{ __('Implicit — users can always manage their own feed') }} |
| {{ __('Send to a role') }} | {{ __('Role:') }} Developer {{ __('or') }} Administrator | {{ __('Anyone outside these roles will not see the Send button') }} |
| {{ __('Toggle the whole feature off') }} | manage global settings |
{{ __('Global Settings → Notifications →') }} feature_notification_center |
| {{ __('SYMPTOM') }} | {{ __('LIKELY CAUSE') }} | {{ __('FIX') }} |
|---|---|---|
| {{ __('Sent but recipient sees nothing') }} | {{ __('Recipient has no matching role, or is inactive') }} | {{ __('Verify the user is active + holds the targeted role') }} |
| {{ __('Bell icon does not update live') }} | {{ __('Reverb WebSocket disconnected') }} | {{ __('Check Monitoring Center → Reverb status. Restart if IDLE during traffic.') }} |
| {{ __('"Clear read" did nothing') }} | {{ __('Nothing was read yet — only read items get purged') }} | {{ __('Mark as read first, then Clear read') }} |
| {{ __('Menu hidden in sidebar') }} | {{ __('Feature flag') }} feature_notification_center {{ __('is OFF') }} |
{{ __('Global Settings → Notifications → enable the toggle') }} |
| {{ __('Send button missing') }} | {{ __('Account lacks Developer / Administrator role') }} | {{ __('Ask an admin to grant the role, or use CLI to seed') }} |
| {{ __('Feed empty even after sending') }} | {{ __('The notifications table was truncated') }} | {{ __('Send a fresh one — old data is gone, new ones will appear') }} |
Illuminate\Notifications with two channels:
database (persistent storage) and broadcast (real-time via Reverb WebSocket).
The notification class is App\Notifications\SystemManagementNotification.
Per-user rows live in the notifications table with Laravel-standard UUIDs.