Notifications: per-standalone Nostr-scoped, aggregated by hub #32

Open
opened 2026-05-02 07:25:44 +00:00 by padreug · 0 comments
Owner

Each standalone (forum, chat, market, tasks, activities, wallet, castle) needs its own scoped notifications surface. The AIO hub at app.${domain} should aggregate all of them grouped per app.

Per-standalone (in-app)

  • A bottom-bar Bell tab inside each standalone showing only that app's notification feed
  • Notifications are derived from Nostr events the user is subscribed to:
    • Forum: replies/votes on user's submissions, mentions in comments, new posts in subscribed Spaces
    • Chat: new DMs (kind 4 / NIP-17 — pending #10)
    • Market: order status changes
    • Activities: RSVP confirmations, event time changes
    • Tasks: claims/completions on user's tasks
    • Wallet: incoming payments (already toasted, but persist a list)
  • Unread count badge on the bottom-bar bell

Hub aggregation

  • Hub adds an aggregated notifications view (or just badge counts on each chakra)
  • Hub doesn't fetch each app's data itself — instead, each standalone publishes a tiny "unread count by app" payload to localStorage / IndexedDB the hub can read, OR the hub subscribes to the same relays and runs the same predicates per app
  • Push notification path tracked separately (existing VAPID setup in .env.example)

Notes

  • Existing chat module already has notifications config (sound, wildcard) — reuse for the chat case
  • Should be a generic NotificationService in base, with per-module predicates
  • Tracked from /forum standalone bottom-bar implementation
Each standalone (forum, chat, market, tasks, activities, wallet, castle) needs its own scoped notifications surface. The AIO hub at `app.${domain}` should aggregate all of them grouped per app. ## Per-standalone (in-app) - A bottom-bar `Bell` tab inside each standalone showing only that app's notification feed - Notifications are derived from Nostr events the user is subscribed to: - **Forum**: replies/votes on user's submissions, mentions in comments, new posts in subscribed Spaces - **Chat**: new DMs (kind 4 / NIP-17 — pending #10) - **Market**: order status changes - **Activities**: RSVP confirmations, event time changes - **Tasks**: claims/completions on user's tasks - **Wallet**: incoming payments (already toasted, but persist a list) - Unread count badge on the bottom-bar bell ## Hub aggregation - Hub adds an aggregated notifications view (or just badge counts on each chakra) - Hub doesn't fetch each app's data itself — instead, each standalone publishes a tiny "unread count by app" payload to localStorage / IndexedDB the hub can read, OR the hub subscribes to the same relays and runs the same predicates per app - Push notification path tracked separately (existing VAPID setup in `.env.example`) ## Notes - Existing chat module already has `notifications` config (sound, wildcard) — reuse for the chat case - Should be a generic `NotificationService` in base, with per-module predicates - Tracked from /forum standalone bottom-bar implementation
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aiolabs/webapp#32
No description provided.