RSS/Atom-Feeds für Teiche und Seiten #149

Closed
opened 2026-07-20 00:15:48 +02:00 by fable-5 · 1 comment
Collaborator

Ziel

Abonnierbare Feeds mit wiki-üblichen Informationen: (a) je Teich = neue/geänderte Seiten, (b) je Seite = Änderungshistorie. Öffentliche Teiche anonym; nicht-öffentliche authentifiziert.

Umsetzungsskizze

  • Neue Handler im PublicModule (apps/api/src/public/): GET /public/:pondSlug/feed.xml und GET /public/:pondSlug/:pageSlug/feed.xml; Atom-XML aus page.findMany({orderBy updatedAt desc, take N}) bzw. der Versions-Tabelle. Einträge: Titel, Link, updated, Autor soweit vorhanden, Auszug (Plain-Text-Cache). Vorlage für Non-JSON-Responses: der html-Handler + html-shell.ts.
  • Auth für private Teiche: dediziertes read-only Feed-Token je Nutzer als Query-Param (?token=…) — PATs bewusst NICHT in URLs wiederverwenden (Leak-Gefahr). Neue kleine Tabelle analog api_tokens (DB-Migration), Verwaltung in den Nutzer-Einstellungen, Permission-Check = canSeePond/canAccessPage des Token-Inhabers.
  • Ohne gültiges Token bei privatem Teich: 404 (Semantik #60).
  • <link rel="alternate" type="application/atom+xml"> in die Public-HTML-Shell.

Akzeptanzkriterien

  • Valides Atom (einmalig gegen W3C-Validator geprüft).
  • Anonym 200 nur bei öffentlichen Teichen; privat ohne Token 404, mit Token 200.
  • Einträge tragen Titel/Link/updated; DB-Tests; Doku (user-guide + API-Doku).
## Ziel Abonnierbare Feeds mit wiki-üblichen Informationen: (a) je Teich = neue/geänderte Seiten, (b) je Seite = Änderungshistorie. Öffentliche Teiche anonym; nicht-öffentliche authentifiziert. ## Umsetzungsskizze - Neue Handler im `PublicModule` (`apps/api/src/public/`): `GET /public/:pondSlug/feed.xml` und `GET /public/:pondSlug/:pageSlug/feed.xml`; Atom-XML aus `page.findMany({orderBy updatedAt desc, take N})` bzw. der Versions-Tabelle. Einträge: Titel, Link, updated, Autor soweit vorhanden, Auszug (Plain-Text-Cache). Vorlage für Non-JSON-Responses: der `html`-Handler + `html-shell.ts`. - Auth für private Teiche: dediziertes read-only **Feed-Token je Nutzer** als Query-Param (`?token=…`) — PATs bewusst NICHT in URLs wiederverwenden (Leak-Gefahr). Neue kleine Tabelle analog `api_tokens` (**DB-Migration**), Verwaltung in den Nutzer-Einstellungen, Permission-Check = canSeePond/canAccessPage des Token-Inhabers. - Ohne gültiges Token bei privatem Teich: 404 (Semantik #60). - `<link rel="alternate" type="application/atom+xml">` in die Public-HTML-Shell. ## Akzeptanzkriterien - Valides Atom (einmalig gegen W3C-Validator geprüft). - Anonym 200 nur bei öffentlichen Teichen; privat ohne Token 404, mit Token 200. - Einträge tragen Titel/Link/updated; DB-Tests; Doku (user-guide + API-Doku).
fable-5 added this to the M21 — API & Feeds milestone 2026-07-20 00:15:48 +02:00
Author
Collaborator

Umgesetzt in PR #157 (7252bd1): Atom-Feeds GET /api/v1/public/:pond/feed.xml (zuletzt geaenderte Seiten) und GET /api/v1/public/:pond/:page/feed.xml (Versions-Historie), @Public mit 404-Semantik. Oeffentliche Teiche anonym; nicht-oeffentliche via neuem read-only Feed-Token je Nutzer (?token=dt_feed_…, neue Tabelle feed_tokens als Migration, Verwaltung unter Einstellungen → Feed-Tokens). Oeffentliche HTML-Seiten annoncieren den Teich-Feed per link rel=alternate. 5 DB-Tests (anonym/privat/Token-Lifecycle/Permission/HTML-Shell) + User-Guide-Doku en+de.

Umgesetzt in PR #157 (7252bd1): Atom-Feeds GET /api/v1/public/:pond/feed.xml (zuletzt geaenderte Seiten) und GET /api/v1/public/:pond/:page/feed.xml (Versions-Historie), @Public mit 404-Semantik. Oeffentliche Teiche anonym; nicht-oeffentliche via neuem read-only Feed-Token je Nutzer (?token=dt_feed_…, neue Tabelle feed_tokens als Migration, Verwaltung unter Einstellungen → Feed-Tokens). Oeffentliche HTML-Seiten annoncieren den Teich-Feed per link rel=alternate. 5 DB-Tests (anonym/privat/Token-Lifecycle/Permission/HTML-Shell) + User-Guide-Doku en+de.
Sign in to join this conversation.
No project
No Assignees
1 Participants
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: stwaidele/dorfteich#149
No description provided.