V8 Central — Product & Technical Spec
  1. Docs
  2. Modules
  3. Notifications

#Notifications

#Requirements (V8 Phase 3) V8 requirement

#FeatureRules
3.14In-app notificationsPaginated list, unread count, mark one / all as read
3.15Notification channelsEmail, Telegram, Pushover, Slack, Discord, Webhook. Add / edit / delete + send test. Discord is set up with a Discord webhook URL (like Slack). Webhook takes any URL and Central POSTs the notification (title + message) there as JSON, like V7 V8 requirement 2026-10-03
3.17Server alertsCentral calls the OSS API to get server alerts, shows them and sends them to the user's channels. Built with the Servers phase
3.5Email preferencesOn/off: account updates, credentials, informative emails

#V7 reference V7 only

  • notifications (Laravel database notifications): GET /notifications/unread, GET /notifications/mark-as-read.
  • notification_channels (per user): type, label, bot_token, group_id, email, webhook_url. Endpoints: resource + send-test-notification. V7 already had Discord and Webhook types (both use webhook_url), which is why the backend added them to V8 on 2026-10-03 — migrated channels keep working.
  • Per-server channel links: GET/POST /servers/{server}/notification-channels, DELETE …/{id}.
  • Server alerts were produced by V7's own monitoring jobs (execute:server-monitor, execute:service-monitoring, disk alerts from InsightHub webhook).

#In-app UX

  • Bell in the top bar with an unread badge. A popover lists the latest 10, with "Mark all as read" and "View all" (/notifications).
  • Each item: icon by type, translated title/body (the backend sends a type + params, not English text Assumption), time, link to the resource.
  • Real-time: V8 Phase 1 excludes broadcasting V8 requirement, so poll the unread count (e.g. every 60 s while visible) until broadcasting exists.

#Notification types (initial set, proposed)

TypeTrigger
server.offline / server.back_onlineStatus job
server.key_revoked401 from OSS
subscription.expiring / expired / renewed / payment_failedBilling jobs
wallet.low_balanceCredit reminder
member.joined / invitation.acceptedMembers
blueprint.run_finishedAdd-on run polling
vps.created / vps.failedProvider flow
ServerAvatar V8 Central · prepared by central-app-2 (Pair 2 frontend) for Bhavik Jethwa · nothing in this spec is implemented yet · Built 2026-10-03 12:35 UTC