You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This document outlines the design and implementation plan for adding RSS 2.0 and Atom 1.0 support to OpenStatus. It will allow you to subscribe to specific public status pages to receive updates on notices and events.
It's open for comments. Development has already started.
Why RSS 2.0 and Atom 1.0?
OpenStatus currently lacks a standardized method for delivering updates on system statuses. By supporting RSS and Atom, the platform will align with industry standards, ensuring compatibility with a wide range of feed readers and providing users with an efficient way to stay informed.
Goals
Multiple standard support: Provide support for different feed formats to ensure broad compatibility.
Minute by Minute Updates: Balanced update frequency for feeds.
Scalability: Design the system to handle feed from tens of thousands of status pages.
Data Integration: Source feed data directly from existing SQL database tables.
Filtering: Allow users to filter feeds by status and kind (incident or maintenance).
Non-Goals
Support for formats other than RSS 2.0 and Atom 1.0.
Real-time feed updates more frequently than minute by minute.
Implementation Strategy
Architecture Layers
Data Layer: SQL database containing incidents and maintenance events.
Business Logic Layer: Node.js backend to process and generate feeds.
Presentation Layer: RSS and Atom feed endpoints accessible to users.
Extra: Replace rss with feed lib in blog/changelog (and maybe support atom as well?) to remove rss from dependencies.
Data Models
Incident
id: Unique identifier.
title: Title of the incident
description: Summary of the incident.
status: Current status (active, resolved).
link: URL to detailed information.
updated_at: Last updated timestamp.
Maintenance
id: Unique identifier.
title: Title of the maintenance.
description: Summary of the maintenance.
status: Current status (scheduled, in-progress, completed).
link: URL to detailed information.
updated_at: Last updated timestamp.
APIs
GET /feed/rss: Generate and return RSS 2.0 feed.
GET /feed/atom: Generate and return Atom 1.0 feed.
GET /feed/rss?status={status}&kind={kind}: Filter feed content by status and kind.
How to: Use API routes under /src/app/status-page/\[domain\]/feed/atom/route.ts as they will be mapped to https://[domain].openstatus.dev/feed/atom (same for rss).
Interface
The “Get updates” button currently supports email subscriptions. We suggest adding a dropdown menu for RSS, Atom, and Email options, with an input popover for email entry when selected.
Before:
After:
Specifications
XML Standards
RSS 2.0:
Use <item> elements for individual incidents or maintenance events.
Include <status> and <category> for differentiation.
Atom 1.0:
Use <entry> elements for individual incidents or maintenance events.
Include <status> and <category> for differentiation.
Header
Metadata for RSS/Atom feed structure.
Proper HTTP headers for caching and validation.
Main Content Area
Dynamic content based on SQLite queries for incidents and maintenance.
Description
Authors
Overview
This document outlines the design and implementation plan for adding RSS 2.0 and Atom 1.0 support to OpenStatus. It will allow you to subscribe to specific public status pages to receive updates on notices and events.
It's open for comments. Development has already started.
Why RSS 2.0 and Atom 1.0?
OpenStatus currently lacks a standardized method for delivering updates on system statuses. By supporting RSS and Atom, the platform will align with industry standards, ensuring compatibility with a wide range of feed readers and providing users with an efficient way to stay informed.
Goals
Non-Goals
Implementation Strategy
Architecture Layers
Dependencies
Extra: Replace
rss
withfeed
lib in blog/changelog (and maybe support atom as well?) to removerss
from dependencies.Data Models
Incident
id
: Unique identifier.title
: Title of the incidentdescription
: Summary of the incident.status
: Current status (active, resolved).link
: URL to detailed information.updated_at
: Last updated timestamp.Maintenance
id
: Unique identifier.title
: Title of the maintenance.description
: Summary of the maintenance.status
: Current status (scheduled, in-progress, completed).link
: URL to detailed information.updated_at
: Last updated timestamp.APIs
GET /feed/rss
: Generate and return RSS 2.0 feed.GET /feed/atom
: Generate and return Atom 1.0 feed.GET /feed/rss?status={status}&kind={kind}
: Filter feed content by status and kind.How to: Use API routes under
/src/app/status-page/\[domain\]/feed/atom/route.ts
as they will be mapped tohttps://[domain].openstatus.dev/feed/atom
(same for rss).Interface
The “Get updates” button currently supports email subscriptions. We suggest adding a dropdown menu for RSS, Atom, and Email options, with an input popover for email entry when selected.
Before:
After:
Specifications
XML Standards
<item>
elements for individual incidents or maintenance events.<status>
and<category>
for differentiation.<entry>
elements for individual incidents or maintenance events.<status>
and<category>
for differentiation.Header
Main Content Area
<title>
,<link>
,<description>
,<pubDate>
,<category>
.<title>
,<id>
,<updated>
,<summary>
.Footer
The text was updated successfully, but these errors were encountered: