commit e8438c3b78564e7376653a8a33ce5e699135c8b3
Author: JayVii <jayvii[AT]posteo[DOT]de>
Date: Fri, 6 Jun 2025 10:55:25 +0200
feat: initial development version of kontra
Diffstat:
A | README.md | | | 99 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | news-sources.json | | | 424 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
2 files changed, 523 insertions(+), 0 deletions(-)
diff --git a/README.md b/README.md
@@ -0,0 +1,99 @@
+# Kontra
+
+**Das Projekt befindet sich zur Zeit im Aufbau und ist noch nicht nutzbar.**
+
+Für Anregungen und Ideen, sende Anfragen oder Code-Patches an:
+[jayvii+kontra[AT]posteo[DOT]de](mailto:jayvii+kontra[AT]posteo[DOT]de).
+
+Die aktuellen Entwiclungsziele befindet sich im Abschnitt
+[Meilensteine](#meilensteine).
+
+---
+
+## Der Linke Newsaggregator
+
+Inspiriert von der [Altera-App](https://alerta-app.de/) stellt "Kontra" eine
+frei zugängliche Online-Plattform, welche seriöse Nachrichten aus dem politisch
+linken Spektrum durchsuchbar und verfügbar macht.
+
+Ziel von "Kontra" ist es, Nutzer:innen die Möglichkeit zu bieten,
+unterschiedliche Nachrichtenquellen durchsuchbar zu machen und sich dadurch,
+nach den eigenen interessen, einen persönlichen Nachrichtenfeed zu erstellen.
+
+Die Nachrichtenquellen sollen zunächst den deutschsprachigen (DACH) Raum
+abdecken, allerdings soll es mittelfristig auch internationale
+Nachrichtenquellen geben.
+
+Mit "Kontra" ziele ich darauf ab, möglichst offen und mit möglichst wenigen
+Einstiegsbarrieren Zugang zu seriösen linken Medien zu bieten. Die Grundprämisse
+der ideenstiftenden [Alerta-App](https://alerta-app.de/) ist gut, jedoch ist sie
+vollkommen Smartphone-App basiert, ist keine
+[Freie Open Source Software](https://fsfe.org/freesoftware/freesoftware.de.html)
+und ist zum aktuellen Zeitpunkt **ausschließlich** für Android und iOS über die
+App-Stores beider Tech-Giganten verfügbar.
+
+Mindestens die Android-Version von "Alerta" ist zudem
+[gespickt mit Trackern von Facebook, Google und anderen Werbeplattformen](https://reports.exodus-privacy.eu.org/de/reports/195504/).
+
+Dem entgegen soll "Kontra" möglichst breit nutzbar sein, indem es offene
+Standards wie [RSS](https://de.wikipedia.org/wiki/RSS_(Web-Feed)) und
+[OPML](https://de.wikipedia.org/wiki/Outline_Processor_Markup_Language) nutzt.
+Das ermöglicht Nutzer:innen die Nutzung von "Kontra" über gängige News-Reader
+ganz ohne Anmeldung, ohne
+[Tracking](https://de.wikipedia.org/wiki/Web_Analytics) und ohne
+[Lock-In Effekte](https://de.wikipedia.org/wiki/Lock-in-Effekt).
+
+Nachrichten kommen **direkt** und ohne Umwege von den jeweiligen Zeitungen,
+Magazinen oder Blogs. Ermöglicht wird dies durch die RSS-Feeds der
+Nachrichtenseiten selbst. "Kontra" selbst liefert keine Nachrichten und keine
+Informationen zwischen Nutzer:innen und den Nachrichtenseiten läuft über die
+"Kontra" Plattform. Die von "Kontra" erstellten OPML-Dateien können in
+beliebigen [Feedreadern](https://de.wikipedia.org/wiki/Feedreader) genutzt
+werden, wie zum Beispiel:
+
+- [FeedDeck](https://feeddeck.app/)
+- [Newsblur](https://www.newsblur.com/)
+- [FreshRSS](https://freshrss.org/)
+- [Tiny Tiny RSS](https://tt-rss.org/)
+- [NetNewsWire](https://netnewswire.com/)
+- [Twine](https://github.com/msasikanth/twine?tab=readme-ov-file#readme)
+- [Thunderbird](https://www.thunderbird.net/de/)
+- [und viele weitere](https://alternativeto.net/browse/search/?q=rss%20reader)
+
+---
+
+# Lizenz
+
+Das Projekt "Kontra" steht unter der Freien und Open Source Software Lizenz
+"AGPL-3.0-or-later".
+
+Das Projekt strebt die Konformität zur
+[REUSE-Spezifikation](https://reuse.software) an, damit auch andere einfach auf
+"Kontra" aufbauen können.
+
+Verantwortlich für das Projekt ist:
+
+- JayVii [jayvii+kontra[AT]posteo[DOT]de](mailto:jayvii+kontra[AT]posteo[DOT]de)
+
+---
+
+# Meilensteine
+
+## Version 0 (Pilot-Version)
+
+- [ ] Initiale Nachrichten-Quelldatei mit den wichtigsten deutschen Linken
+ Zeitungen *[in Arbeit]*
+- [ ] Aufbau der Grundstruktur für eine Webapplikation: Quellenliste,
+ Kategorienlisten, Suchfunktion und Erstellung von OPML-Dateien
+
+## Version 1 (Erste nutzbare Version)
+
+- [ ] Dynamische Zusammenstellung von Quellen zu einer einzelnen OPML-Datei
+
+## Version 2
+
+- [ ] Voranschau einzelner Feeds und dynamischer Zusammenstellungen
+
+Für Anregungen und Ideen, sende Anfragen oder Code-Patches an:
+[jayvii+kontra[AT]posteo[DOT]de](mailto:jayvii+kontra[AT]posteo[DOT]de).
+
diff --git a/news-sources.json b/news-sources.json
@@ -0,0 +1,424 @@
+{
+ "sources": {
+ "taz-pol-de": {
+ "title": "taz: Politik Deutschland",
+ "web": "https://taz.de/Politik/Deutschland/!p4616/",
+ "rss": "https://taz.de/Politik/Deutschland/!p4616;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "politik", "innenpolitik",
+ "deutschland"
+ ]
+ },
+ "taz-pol-eu": {
+ "title": "taz Politik Europa",
+ "web": "https://taz.de/Politik/Europa/!p4617/",
+ "rss": "https://taz.de/Politik/Europa/!p4617;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "politik", "europapolitik",
+ "europa"
+ ]
+ },
+ "taz-pol-us": {
+ "title": "taz Politik Amerika",
+ "web": "https://taz.de/Politik/Amerika/!p4618/",
+ "rss": "https://taz.de/Politik/Amerika/!p4618;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "politik", "außenpolitik",
+ "usa", "amerika"
+ ]
+ },
+ "taz-pol-af": {
+ "title": "taz Politik Afrika",
+ "web": "https://taz.de/Politik/Afrika/!p4621/",
+ "rss": "https://taz.de/Politik/Afrika/!p4621;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "politik", "außenpolitik",
+ "afrika"
+ ]
+ },
+ "taz-pol-as": {
+ "title": "taz Politik Asien",
+ "web": "https://taz.de/Politik/Asien/!p4619/",
+ "rss": "https://taz.de/Politik/Asien/!p4619;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "politik", "außenpolitik",
+ "asien"
+ ]
+ },
+ "taz-pol-no": {
+ "title": "taz Politik Nahost",
+ "web": "https://taz.de/Politik/Nahost/!p4620/",
+ "rss": "https://taz.de/Politik/Nahost/!p4620;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "politik", "außenpolitik",
+ "nahost"
+ ]
+ },
+ "taz-pol-net": {
+ "title": "taz Netzpolitik",
+ "web": "https://taz.de/Politik/Netzpolitik/!p4622/",
+ "rss": "https://taz.de/Politik/Netzpolitik/!p4622;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "politik", "netz"
+ ]
+ },
+ "taz-eco-net": {
+ "title": "taz Netzökonomie",
+ "web": "https://taz.de/Oeko/Netzoekonomie/!p4627/",
+ "rss": "https://taz.de/Oeko/Netzoekonomie/!p4627;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "wirtschaft", "netz"
+ ]
+ },
+ "taz-cul-net": {
+ "title": "taz Netzkultur",
+ "web": "https://taz.de/Kultur/Netzkultur/!p4631/",
+ "rss": "https://taz.de/Kultur/Netzkultur/!p4631;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "kultur", "netz"
+ ]
+ },
+ "taz-ökonomie": {
+ "title": "taz Ökonomie",
+ "web": "https://taz.de/Oeko/Oekonomie/!p4623/",
+ "rss": "https://taz.de/Oeko/Oekonomie/!p4623;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "wirtschaft",
+ "volkswirtschaft"
+ ]
+ },
+ "taz-ökologie": {
+ "title": "taz Ökologie",
+ "web": "https://taz.de/Oeko/Oekologie/!p4624/",
+ "rss": "https://taz.de/Oeko/Oekologie/!p4624;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "umwelt"
+ ]
+ },
+ "taz-arbeit": {
+ "title": "taz Arbeit",
+ "web": "https://taz.de/Oeko/Arbeit/!p4629/",
+ "rss": "https://taz.de/Oeko/Arbeit/!p4629;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "wirtschaft", "arbeit"
+ ]
+ },
+ "taz-konsum": {
+ "title": "taz Konsum",
+ "web": "https://taz.de/Oeko/Konsum/!p4625/",
+ "rss": "https://taz.de/Oeko/Konsum/!p4625;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "wirtschaft", "konsum"
+ ]
+ },
+ "taz-verkehr": {
+ "title": "taz Verkehr",
+ "web": "https://taz.de/Oeko/Verkehr/!p4628/",
+ "rss": "https://taz.de/Oeko/Verkehr/!p4628;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "wirtschaft", "verkehr"
+ ]
+ },
+ "taz-wissenschaft": {
+ "title": "taz Wissenschaft",
+ "web": "https://taz.de/Oeko/Wissenschaft/!p4636/",
+ "rss": "https://taz.de/Oeko/Wissenschaft/!p4636;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "wissenschaft"
+ ]
+ },
+ "taz-soc-alltag": {
+ "title": "taz Alltag",
+ "web": "https://taz.de/Gesellschaft/Alltag/!p4632/",
+ "rss": "https://taz.de/Gesellschaft/Alltag/!p4632;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "gesellschaft"
+ ]
+ },
+ "taz-soc-reportage": {
+ "title": "taz Reportage und Recherche",
+ "web": "https://taz.de/Gesellschaft/Reportage-und-Recherche/!p5265/",
+ "rss": "https://taz.de/Gesellschaft/Reportage-und-Recherche/!p5265;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "gesellschaft",
+ "reportage"
+ ]
+ },
+ "taz-soc-reportage": {
+ "title": "taz Debatte",
+ "web": "https://taz.de/Gesellschaft/Debatte/!p4633/",
+ "rss": "https://taz.de/Gesellschaft/Debatte/!p4633;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "gesellschaft",
+ "debatte"
+ ]
+ },
+ "taz-soc-kolumne": {
+ "title": "taz Kolumnen",
+ "web": "https://taz.de/Gesellschaft/Kolumnen/!p4634/",
+ "rss": "https://taz.de/Gesellschaft/Kolumnen/!p4634;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "gesellschaft",
+ "kolumne"
+ ]
+ },
+ "taz-soc-medien": {
+ "title": "taz Medien",
+ "web": "https://taz.de/Gesellschaft/Medien/!p4630/",
+ "rss": "https://taz.de/Gesellschaft/Medien/!p4630;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "gesellschaft",
+ "medien"
+ ]
+ },
+ "taz-soc-bildung": {
+ "title": "taz Bildung",
+ "web": "https://taz.de/Gesellschaft/Bildung/!p4635/",
+ "rss": "https://taz.de/Gesellschaft/Bildung/!p4635;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "gesellschaft",
+ "politik", "bildung"
+ ]
+ },
+ "taz-soc-gesundheit": {
+ "title": "taz Gesundheit",
+ "web": "https://taz.de/Gesellschaft/Gesundheit/!p4637/",
+ "rss": "https://taz.de/Gesellschaft/Gesundheit/!p4637;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "gesellschaft",
+ "gesundheit"
+ ]
+ },
+ "taz-soc-reise": {
+ "title": "taz Reisen",
+ "web": "https://taz.de/Gesellschaft/Reise/!p4638/",
+ "rss": "https://taz.de/Gesellschaft/Reise/!p4638;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "gesellschaft",
+ "tourismus"
+ ]
+ },
+ "taz-cul-musik": {
+ "title": "taz Musik",
+ "web": "https://taz.de/Kultur/Musik/!p4640/",
+ "rss": "https://taz.de/Kultur/Musik/!p4640;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "kultur", "musik"
+ ]
+ },
+ "taz-cul-film": {
+ "title": "taz Film",
+ "web": "https://taz.de/Kultur/Film/!p4641/",
+ "rss": "https://taz.de/Kultur/Film/!p4641;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "kultur", "filme"
+ ]
+ },
+ "taz-cul-kunst": {
+ "title": "taz Künste",
+ "web": "https://taz.de/Kultur/Kuenste/!p4642/",
+ "rss": "https://taz.de/Kultur/Kuenste/!p4642;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "kultur", "kunst"
+ ]
+ },
+ "taz-cul-buch": {
+ "title": "taz Buch",
+ "web": "https://taz.de/Kultur/Buch/!p4643/",
+ "rss": "https://taz.de/Kultur/Buch/!p4643;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "kultur", "bücher"
+ ]
+ },
+ "taz-cul-sport": {
+ "title": "taz Sport",
+ "web": "https://taz.de/Sport/!p4646/",
+ "rss": "https://taz.de/Sport/!p4646;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "sport"
+ ]
+ },
+ "taz-loc-berlin": {
+ "title": "taz Berlin",
+ "web": "https://taz.de/Berlin/!p4649/",
+ "rss": "https://taz.de/Berlin/!p4649;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "lokal", "berlin"
+ ]
+ },
+ "taz-loc-hamburg": {
+ "title": "taz Hamburg",
+ "web": "https://taz.de/Nord/Hamburg/!p4651/",
+ "rss": "https://taz.de/Nord/Hamburg/!p4651;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "lokal", "hamburg"
+ ]
+ },
+ "taz-loc-bremen": {
+ "title": "taz Bremen",
+ "web": "https://taz.de/Nord/Bremen/!p4652/",
+ "rss": "https://taz.de/Nord/Bremen/!p4652;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "lokal", "bremen"
+ ]
+ },
+ "taz-loc-nord-cul": {
+ "title": "taz Kultur Norden",
+ "web": "https://taz.de/Nord/Kultur/!p4653/",
+ "rss": "https://taz.de/Nord/Kultur/!p4653;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "lokal", "norddeutschland",
+ "kultur"
+ ]
+ },
+ "taz-sat-wahrheit": {
+ "title": "taz Wahrheit",
+ "web": "https://taz.de/Wahrheit/!p4644/",
+ "rss": "https://taz.de/Wahrheit/!p4644;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "satire"
+ ]
+ },
+ "taz-foc-klimawandel": {
+ "title": "taz Klimawandel",
+ "web": "https://taz.de/Schwerpunkt-Klimawandel/!t5008262/",
+ "rss": "https://taz.de/Schwerpunkt-Klimawandel/!t5008262;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "umwelt"
+ ]
+ },
+ "taz-foc-nahost": {
+ "title": "taz Nahost-Konflikt",
+ "web": "https://taz.de/Schwerpunkt-Nahost-Konflikt/!t5007999/",
+ "rss": "https://taz.de/Schwerpunkt-Nahost-Konflikt/!t5007999;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "nahost"
+ ]
+ },
+ "taz-wochenkommentar": {
+ "title": "taz Wochenkommentar",
+ "web": "https://taz.de/Wochenkommentar/!t5478515/",
+ "rss": "https://taz.de/Wochenkommentar/!t5478515;rss/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "kommentar"
+ ]
+ },
+ "taz-hausblog": {
+ "title": "taz Hausblog",
+ "web": "https://blogs.taz.de/hausblog/",
+ "rss": "https://blogs.taz.de/hausblog/blogfeed/",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "hinter_den_kulissen"
+ ]
+ },
+
+ "nd-meinung": {
+ "title": "nd Meinung",
+ "web": "https://www.nd-aktuell.de/rubrik/meinung/",
+ "rss": "https://www.nd-aktuell.de/rss/kommentare.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "kommentar"
+ ]
+ },
+ "nd-pol": {
+ "title": "nd Politik",
+ "web": "https://www.nd-aktuell.de/rubrik/politik/",
+ "rss": "https://www.nd-aktuell.de/rss/politik.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "politik"
+ ]
+ },
+ "nd-eco": {
+ "title": "nd Wirtschaft und Umwelt",
+ "web": "https://www.nd-aktuell.de/rubrik/wirtschaft-umwelt",
+ "rss": "https://www.nd-aktuell.de/rss/wirtschaft-umwelt.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "wirtschaft",
+ "volkswirtschaft", "umwelt"
+ ]
+ },
+ "nd-loc-berlin": {
+ "title": "nd Berlin",
+ "web": "https://www.nd-aktuell.de/rubrik/Berlin/",
+ "rss": "https://www.nd-aktuell.de/rss/berlin.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "lokal", "berlin"
+ ]
+ },
+ "nd-loc-brandenburg": {
+ "title": "nd Berlin",
+ "web": "https://www.nd-aktuell.de/rubrik/Brandenburg/",
+ "rss": "https://www.nd-aktuell.de/rss/brandenburg.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "lokal", "brandenburg"
+ ]
+ },
+ "nd-wissen": {
+ "title": "nd Wissen",
+ "web": "https://www.nd-aktuell.de/rubrik/wissen/",
+ "rss": "https://www.nd-aktuell.de/rss/wissen.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "kultur"
+ ]
+ },
+ "nd-kultur": {
+ "title": "nd Kultur",
+ "web": "https://www.nd-aktuell.de/rubrik/kultur/",
+ "rss": "https://www.nd-aktuell.de/rss/kultur.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "debatte", "kultur"
+ ]
+ },
+ "nd-sport": {
+ "title": "nd Sport",
+ "web": "https://www.nd-aktuell.de/rubrik/sport/",
+ "rss": "https://www.nd-aktuell.de/rss/sport.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "sport"
+ ]
+ },
+ "nd-gesundheit": {
+ "title": "nd Gesund leben",
+ "web": "https://www.nd-aktuell.de/rubrik/gesund_leben/",
+ "rss": "https://www.nd-aktuell.de/rss/gesund_leben.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "gesellschaft",
+ "gesundheit"
+ ]
+ },
+ "nd-reisen": {
+ "title": "nd Reisen",
+ "web": "https://www.nd-aktuell.de/rubrik/reise/",
+ "rss": "https://www.nd-aktuell.de/rss/reise.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "gesellschaft",
+ "tourismus"
+ ]
+ },
+ "nd-ratgeber": {
+ "title": "nd Ratgeber",
+ "web": "https://www.nd-aktuell.de/rubrik/ratgeber/",
+ "rss": "https://www.nd-aktuell.de/rss/ratgeber.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "gesellschaft",
+ "ratgeber"
+ ]
+ },
+ "nd-commune": {
+ "title": "nd Commune",
+ "web": "https://www.nd-aktuell.de/rubrik/nd-commune/",
+ "rss": "https://www.nd-aktuell.de/rss/nd-commune.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "hinter_den_kulissen"
+ ]
+ },
+ "nd-hausblog": {
+ "title": "nd In eigener Sache",
+ "web": "https://www.nd-aktuell.de/rubrik/hausblog/",
+ "rss": "https://www.nd-aktuell.de/rss/hausblog.xml",
+ "categories": [
+ "keine_bezahlschranke", "deutsch", "täglich", "hinter_den_kulissen"
+ ]
+ }
+ }
+}