Skip to content

Per-incident permalink pages for feed item links #40

Description

@amondnet

Context

Incident RSS/Atom feeds landed in #(this branch: amondnet/feed, commit 7f43ea5)/feed.rss, /feed.atom, and the Statuspage-style /history.rss, /history.atom aliases, generated by @statusbeam/core's buildRssFeed/buildAtomFeed.

One deliberate shortcut: because there is no dedicated per-incident page yet, every feed item/entry links to the status-page root (/) rather than a real incident permalink:

  • RSS <item><link>${siteUrl}/
  • Atom <entry><link rel="alternate">${siteUrl}/

Entry uniqueness is preserved via tag: URIs (tag:<host>,2005:Incident/<id>), so readers still de-dupe correctly — but the links aren't deep links.

This mirrors how Statuspage.io/incident.io link each entry to /incidents/<id>.

Proposal

Add per-incident permalink pages and point the feed (and the on-page incident cards) at them.

  • A route like /incidents/[id] (or /incidents/[slug]) rendering a single incident's timeline
  • Update buildRssFeed/buildAtomFeed item/entry links to the incident permalink instead of /
  • Anchor/link the incident cards in IncidentList to their permalink
  • Decide locale strategy for incident pages (feeds are currently English-only, single canonical document)

Out of scope / open questions

  • Locale-aware feeds — feeds are English-only right now. If we want /{locale}/feed.atom, that's a separate decision (most status providers keep one canonical, language-neutral feed).
  • Incident permalink identifier: numeric id vs. a stable slug.

Pointers

  • Generator + link construction: packages/core/src/feed.ts
  • Endpoints: apps/web/src/pages/{feed,history}.{rss,atom}.ts, shared handler apps/web/src/lib/feed.ts
  • Incident model + helpers: packages/core/src/incidents.ts
  • On-page rendering: apps/web/src/components/IncidentList.tsx

Metadata

Metadata

Assignees

No one assigned

    Labels

    p3Priority 3 - Lowtype:featureNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions