Skip to content

Platform notification system (product-wide): email + UI notices #99

Open

Description

@sre-helmcode

Context

Several products need member-facing notifications but cloud-api has no generic notification infrastructure (the auth email sender is purpose-built; no reusable template/helper exists). The workspace-slot lifecycle currently logs structured warnings only — members get no email when their workspace stops at period end, enters the deletion grace window, or is about to be deleted.

What

A small platform-level notification system covering all products (workspaces/slots, memberships, spaces, future ones):

  • A reusable email sender in cloud-api (template + recipient + product tag), built on the existing Resend client, with suppression-list respect.
  • Product-neutral event hooks so features request notifications without owning delivery: e.g. workspace.stops_at_period_end, workspace.grace_deletion_pending, workspace.deleted_after_grace.
  • UI inbox/banners as a later slice (start with email only).

First consumers

  1. Workspace slot lifecycle: stop-at-period-end warning, grace-pending warning, final deletion notice (the free-workspace churn lifecycle needs the same three).
  2. Membership dunning already has its own emails — migrate it onto the shared sender only if cheap.

Out of scope

  • Real-time channels (push/Discord) — later.
  • Per-product template ownership — each feature supplies copy.

Activity

  1. sre-helmcode commented on Sep 30, 2026

    @sre-helmcode
    ContributorAuthor

    Note: the workspace lifecycle emails (grace period started, 48h before deletion, and deleted) are being built now with the existing email client, ahead of this issue. When the notification system lands, they should be migrated onto it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions