RSS/Atom-Feed für neue Antrags-Bewertungen #125

Closed
opened 2026-04-11 21:15:18 +02:00 by tobias · 1 comment
Owner

Kontext

Aus #102 (dotty 2026-04-11): "RSS-Feed fuer neue Bewertungen — auch das bauen parallel zu den E-Mail-Benachrichtigungen."

Öffentlicher RSS-Feed, damit Feed-Reader-Nutzer neue Bewertungen abonnieren können. Kein Login nötig, pro Filter ein eigener Feed-URL.

Arbeitsschritte

  • Endpoint GET /api/feed.xml?bundesland=...&partei=... (Query-Parameter optional)
  • Atom 1.0 Format (modern, besser als RSS 2.0)
  • Jeder Eintrag: Titel = Antrag-Titel, Summary = GWÖ-Score + Empfehlung + Kurzfassung, Link = Detail-URL
  • Last-Modified-Header + ETag für effizientes Polling
  • Cache: 10min TTL (feed-reader polls sind häufig)
  • Link im Footer der Webapp: "RSS-Feed" mit Standard-RSS-Icon
  • Feed-Autodiscovery via <link rel="alternate" type="application/atom+xml"> im HTML-Header

Akzeptanzkriterien

  • Feed validiert gegen Atom-Spec
  • Mindestens in feedly, newsblur, Thunderbird testbar
  • Gefilterte Feeds funktionieren (?bundesland=NRW, ?partei=CDU)
## Kontext Aus #102 (dotty 2026-04-11): *"RSS-Feed fuer neue Bewertungen — auch das bauen parallel zu den E-Mail-Benachrichtigungen."* Öffentlicher RSS-Feed, damit Feed-Reader-Nutzer neue Bewertungen abonnieren können. Kein Login nötig, pro Filter ein eigener Feed-URL. ## Arbeitsschritte - [ ] Endpoint `GET /api/feed.xml?bundesland=...&partei=...` (Query-Parameter optional) - [ ] Atom 1.0 Format (modern, besser als RSS 2.0) - [ ] Jeder Eintrag: Titel = Antrag-Titel, Summary = GWÖ-Score + Empfehlung + Kurzfassung, Link = Detail-URL - [ ] Last-Modified-Header + ETag für effizientes Polling - [ ] Cache: 10min TTL (feed-reader polls sind häufig) - [ ] Link im Footer der Webapp: "RSS-Feed" mit Standard-RSS-Icon - [ ] Feed-Autodiscovery via `<link rel="alternate" type="application/atom+xml">` im HTML-Header ## Akzeptanzkriterien - Feed validiert gegen Atom-Spec - Mindestens in feedly, newsblur, Thunderbird testbar - Gefilterte Feeds funktionieren (`?bundesland=NRW`, `?partei=CDU`)
Author
Owner

Live deployed 2026-04-11.

Endpoint: GET /api/feed.xml

Parameter:

  • bundesland (optional): Filter auf BL-Code (NRW, MV, BE, …)
  • partei (optional): Filter auf Partei (CDU, SPD, GRÜNE, …)
  • limit (optional, default 50, max 200)

Verifiziert in Prod:

  • Atom 1.0 valides XML, content-type: application/atom+xml; charset=utf-8
  • Bundesland-Filter: ?bundesland=NRW
  • Partei-Filter: ?partei=CDU
  • ETag-basiertes 304-Caching funktioniert
  • Cache-Control: public, max-age=600 (10min)
  • CC BY 4.0 Rights-Tag im Feed-Header
  • Autodiscovery-Link im <head> von index.html: <link rel="alternate" type="application/atom+xml" …>
  • Footer-Link im Hamburger-Menü: "📡 Atom-Feed"

Feed-URLs zum Ausprobieren:

Schließe das Issue.

Live deployed 2026-04-11. **Endpoint:** `GET /api/feed.xml` **Parameter:** - `bundesland` (optional): Filter auf BL-Code (NRW, MV, BE, …) - `partei` (optional): Filter auf Partei (CDU, SPD, GRÜNE, …) - `limit` (optional, default 50, max 200) **Verifiziert in Prod:** - ✅ Atom 1.0 valides XML, `content-type: application/atom+xml; charset=utf-8` - ✅ Bundesland-Filter: `?bundesland=NRW` - ✅ Partei-Filter: `?partei=CDU` - ✅ ETag-basiertes 304-Caching funktioniert - ✅ Cache-Control: `public, max-age=600` (10min) - ✅ CC BY 4.0 Rights-Tag im Feed-Header - ✅ Autodiscovery-Link im `<head>` von `index.html`: `<link rel="alternate" type="application/atom+xml" …>` - ✅ Footer-Link im Hamburger-Menü: "📡 Atom-Feed" **Feed-URLs zum Ausprobieren:** - https://gwoe.toppyr.de/api/feed.xml - https://gwoe.toppyr.de/api/feed.xml?bundesland=NRW - https://gwoe.toppyr.de/api/feed.xml?partei=GRÜNE - https://gwoe.toppyr.de/api/feed.xml?bundesland=NRW&partei=CDU&limit=10 Schließe das Issue.
Sign in to join this conversation.
No description provided.