Rename NewsSource to Source now that it models every kind (review item 3)

The class and its file (lib/models/source.dart) follow the glossary term.
Persisted JSON keys are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
CedricandClaude Opus 5.5 committed 2026-10-16 16:03:25 +02:00
1 parent 1a3442ea02
commit a47ff28ed1
33 files changed
+119 -119

No files matched your search

+44 -44
View File
@@ -1,10 +1,10 @@
import '../models/news_source.dart';
import '../models/source.dart';
/// Curated tech news feeds. All URLs were checked to return a valid RSS/Atom
/// feed. Users can toggle them and add their own in the Sources tab.
const defaultSources = <NewsSource>[
const defaultSources = <Source>[
// --- German -------------------------------------------------------------
NewsSource(
Source(
id: 'heise',
name: 'heise online',
feedUrl: 'https://www.heise.de/rss/heise-atom.xml',
@@ -13,7 +13,7 @@ const defaultSources = <NewsSource>[
description: 'IT-Nachrichten, breit aufgestellt (hohes Volumen)',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'golem',
name: 'Golem.de',
feedUrl: 'https://rss.golem.de/rss.php?feed=ATOM1.0',
@@ -22,7 +22,7 @@ const defaultSources = <NewsSource>[
description: 'IT-News für Profis',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'the-decoder',
name: 'The Decoder',
feedUrl: 'https://the-decoder.de/feed/',
@@ -31,7 +31,7 @@ const defaultSources = <NewsSource>[
description: 'KI-News: Modelle, Forschung, Branche',
enabledByDefault: true,
),
NewsSource(
Source(
id: 't3n',
name: 't3n',
feedUrl: 'https://t3n.de/rss.xml',
@@ -40,7 +40,7 @@ const defaultSources = <NewsSource>[
description: 'Digitales Business, Startups, KI',
checkPaywallOnPage: true,
),
NewsSource(
Source(
id: 'computerbase',
name: 'ComputerBase',
feedUrl: 'https://www.computerbase.de/rss/news.xml',
@@ -48,7 +48,7 @@ const defaultSources = <NewsSource>[
language: SourceLanguage.de,
description: 'Hardware, Software, Gaming',
),
NewsSource(
Source(
id: 'spiegel-netzwelt',
name: 'SPIEGEL Netzwelt',
feedUrl: 'https://www.spiegel.de/netzwelt/index.rss',
@@ -57,7 +57,7 @@ const defaultSources = <NewsSource>[
description: 'Digitales aus Sicht eines Nachrichtenmagazins',
checkPaywallOnPage: true,
),
NewsSource(
Source(
id: 'zeit-digital',
name: 'ZEIT Digital',
feedUrl: 'https://newsfeed.zeit.de/digital/index',
@@ -65,7 +65,7 @@ const defaultSources = <NewsSource>[
language: SourceLanguage.de,
description: 'Digitalpolitik und Gesellschaft',
),
NewsSource(
Source(
id: 'netzpolitik',
name: 'netzpolitik.org',
feedUrl: 'https://netzpolitik.org/feed/',
@@ -73,7 +73,7 @@ const defaultSources = <NewsSource>[
language: SourceLanguage.de,
description: 'Digitale Freiheitsrechte, Datenschutz',
),
NewsSource(
Source(
id: 'heise-security',
name: 'heise Security',
feedUrl: 'https://www.heise.de/security/rss/news-atom.xml',
@@ -81,7 +81,7 @@ const defaultSources = <NewsSource>[
language: SourceLanguage.de,
description: 'Security-Teil von heise online (heise online ausschalten, um ihn einzeln zu lesen)',
),
NewsSource(
Source(
id: 'heise-developer',
name: 'heise Developer',
feedUrl: 'https://www.heise.de/developer/rss/news-atom.xml',
@@ -89,7 +89,7 @@ const defaultSources = <NewsSource>[
language: SourceLanguage.de,
description: 'Developer-Teil von heise online (heise online ausschalten, um ihn einzeln zu lesen)',
),
NewsSource(
Source(
id: 'caschy',
name: "Caschys Blog",
feedUrl: 'https://stadt-bremerhaven.de/feed/',
@@ -97,7 +97,7 @@ const defaultSources = <NewsSource>[
language: SourceLanguage.de,
description: 'Consumer-Tech, Smartphones, Streaming',
),
NewsSource(
Source(
id: 'derstandard-web',
name: 'derStandard Web',
feedUrl: 'https://www.derstandard.at/rss/web',
@@ -105,7 +105,7 @@ const defaultSources = <NewsSource>[
language: SourceLanguage.de,
description: 'Tech-Ressort der österreichischen Tageszeitung',
),
NewsSource(
Source(
id: 'borncity',
name: 'Borns IT- und Windows-Blog',
feedUrl: 'https://www.borncity.com/blog/feed/',
@@ -115,7 +115,7 @@ const defaultSources = <NewsSource>[
),
// --- English ------------------------------------------------------------
NewsSource(
Source(
id: 'verge',
name: 'The Verge',
feedUrl: 'https://www.theverge.com/rss/index.xml',
@@ -123,7 +123,7 @@ const defaultSources = <NewsSource>[
language: SourceLanguage.en,
description: 'Consumer tech, culture, policy',
),
NewsSource(
Source(
id: 'arstechnica',
name: 'Ars Technica',
feedUrl: 'https://feeds.arstechnica.com/arstechnica/index',
@@ -132,7 +132,7 @@ const defaultSources = <NewsSource>[
description: 'In-depth tech and science',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'techcrunch',
name: 'TechCrunch',
feedUrl: 'https://techcrunch.com/feed/',
@@ -140,7 +140,7 @@ const defaultSources = <NewsSource>[
language: SourceLanguage.en,
description: 'Startups, funding, big tech',
),
NewsSource(
Source(
id: 'hackernews',
name: 'Hacker News',
feedUrl: 'https://hnrss.org/frontpage?points=150',
@@ -149,7 +149,7 @@ const defaultSources = <NewsSource>[
description: 'Front page stories with 150+ points',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'techmeme',
name: 'Techmeme',
feedUrl: 'https://www.techmeme.com/feed.xml',
@@ -158,7 +158,7 @@ const defaultSources = <NewsSource>[
description: "The day's top tech stories, picked by editors",
enabledByDefault: true,
),
NewsSource(
Source(
id: 'lobsters',
name: 'Lobsters',
feedUrl: 'https://lobste.rs/rss',
@@ -167,7 +167,7 @@ const defaultSources = <NewsSource>[
description: 'Computing links, voted by a programmer community',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'simonwillison',
name: 'Simon Willison',
feedUrl: 'https://simonwillison.net/atom/entries/',
@@ -176,7 +176,7 @@ const defaultSources = <NewsSource>[
description: 'LLMs and AI tools, tried out hands-on',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'mit-tr',
name: 'MIT Technology Review',
feedUrl: 'https://www.technologyreview.com/feed/',
@@ -184,7 +184,7 @@ const defaultSources = <NewsSource>[
language: SourceLanguage.en,
description: 'AI, biotech, climate tech',
),
NewsSource(
Source(
id: 'theregister',
name: 'The Register',
feedUrl: 'https://www.theregister.com/headlines.atom',
@@ -192,7 +192,7 @@ const defaultSources = <NewsSource>[
language: SourceLanguage.en,
description: 'Enterprise IT with attitude',
),
NewsSource(
Source(
id: 'bleepingcomputer',
name: 'BleepingComputer',
feedUrl: 'https://www.bleepingcomputer.com/feed/',
@@ -202,7 +202,7 @@ const defaultSources = <NewsSource>[
),
// --- Learning -----------------------------------------------------------
NewsSource(
Source(
id: 'bytebytego',
name: 'ByteByteGo',
feedUrl: 'https://blog.bytebytego.com/feed',
@@ -212,7 +212,7 @@ const defaultSources = <NewsSource>[
description: 'System design explained with diagrams',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'systemdesignone',
name: 'System Design One',
feedUrl: 'https://newsletter.systemdesign.one/feed',
@@ -222,7 +222,7 @@ const defaultSources = <NewsSource>[
description: 'System design case studies of real systems',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'pragmaticengineer-blog',
name: 'The Pragmatic Engineer (blog)',
feedUrl: 'https://blog.pragmaticengineer.com/rss/',
@@ -232,7 +232,7 @@ const defaultSources = <NewsSource>[
description: 'How big tech and startups build software (free posts)',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'martinfowler',
name: 'Martin Fowler',
feedUrl: 'https://martinfowler.com/feed.atom',
@@ -242,7 +242,7 @@ const defaultSources = <NewsSource>[
description: 'Software architecture, refactoring, delivery practices',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'juliaevans',
name: 'Julia Evans',
feedUrl: 'https://jvns.ca/atom.xml',
@@ -252,7 +252,7 @@ const defaultSources = <NewsSource>[
description: 'Systems, networking and Unix tools, explained plainly',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'danluu',
name: 'Dan Luu',
feedUrl: 'https://danluu.com/atom.xml',
@@ -262,7 +262,7 @@ const defaultSources = <NewsSource>[
description: 'Long, data-driven essays on computers and engineering',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'cloudflare-blog',
name: 'The Cloudflare Blog',
feedUrl: 'https://blog.cloudflare.com/rss/',
@@ -272,7 +272,7 @@ const defaultSources = <NewsSource>[
description: 'Networking, security and incident write-ups in depth',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'netflix-techblog',
name: 'Netflix Technology Blog',
feedUrl: 'https://netflixtechblog.com/feed',
@@ -282,7 +282,7 @@ const defaultSources = <NewsSource>[
description: 'Distributed systems, data and streaming at scale',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'meta-engineering',
name: 'Engineering at Meta',
feedUrl: 'https://engineering.fb.com/feed/',
@@ -292,7 +292,7 @@ const defaultSources = <NewsSource>[
description: 'Infrastructure, AI and production engineering at Meta',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'github-engineering',
name: 'GitHub Blog: Engineering',
feedUrl: 'https://github.blog/engineering/feed/',
@@ -302,7 +302,7 @@ const defaultSources = <NewsSource>[
description: 'How GitHub builds and runs GitHub',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'latent-space',
name: 'Latent Space',
feedUrl: 'https://www.latent.space/feed',
@@ -312,7 +312,7 @@ const defaultSources = <NewsSource>[
description: 'AI engineering: interviews and deep dives',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'import-ai',
name: 'Import AI',
feedUrl: 'https://importai.substack.com/feed',
@@ -322,7 +322,7 @@ const defaultSources = <NewsSource>[
description: 'Weekly AI research digest by Jack Clark',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'interconnects',
name: 'Interconnects',
feedUrl: 'https://www.interconnects.ai/feed',
@@ -332,7 +332,7 @@ const defaultSources = <NewsSource>[
description: 'Language model training and research, analysed',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'ahead-of-ai',
name: 'Ahead of AI',
feedUrl: 'https://magazine.sebastianraschka.com/feed',
@@ -342,7 +342,7 @@ const defaultSources = <NewsSource>[
description: 'LLM research explained, by Sebastian Raschka',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'lilianweng',
name: 'Lilian Weng',
feedUrl: 'https://lilianweng.github.io/index.xml',
@@ -352,7 +352,7 @@ const defaultSources = <NewsSource>[
description: 'Thorough surveys of machine learning topics',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'infoq',
name: 'InfoQ',
feedUrl: 'https://feed.infoq.com/',
@@ -363,7 +363,7 @@ const defaultSources = <NewsSource>[
),
// --- Fun ----------------------------------------------------------------
NewsSource(
Source(
id: 'xkcd',
name: 'xkcd',
feedUrl: 'https://xkcd.com/atom.xml',
@@ -373,7 +373,7 @@ const defaultSources = <NewsSource>[
description: 'Webcomic of romance, sarcasm, math and language',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'thedailywtf',
name: 'The Daily WTF',
feedUrl: 'https://thedailywtf.com/rss',
@@ -383,7 +383,7 @@ const defaultSources = <NewsSource>[
description: 'IT horror stories, bad code and error messages',
enabledByDefault: true,
),
NewsSource(
Source(
id: 'programmerhumor',
name: 'r/ProgrammerHumor',
feedUrl: 'https://www.reddit.com/r/ProgrammerHumor/top/.rss?t=day',