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:
1 parent
1a3442ea02
commit
a47ff28ed1
33 files changed
+119
-119
No files matched your search
@@ -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',
|
||||
|
||||
Reference in new issue
Block a user