Bring the README in line with the source kinds (review items 1, 2)

The catalog has 42 Sources (13 German, 29 English; 23 News, 16 Learning,
3 Fun). Today shows News sources only, Learn has a Learning (14 days) and
a Fun (3 days) section, neither feeds the Briefing, and the time window
setting is for News. The project layout lists the UI files including
learn_screen.dart.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
CedricandClaude Opus 5.5 committed 2026-10-16 16:09:43 +02:00
1 parent 130c5e6bb7
commit 3b54b3515b
1 file changed
+33 -21
+33 -21
View File
@@ -6,29 +6,32 @@ or write a daily briefing. It's meant to replace the n8n → Discord workflow.
## Features (prototype)
- **Today**: all articles from the enabled sources in the last 12/24/48 h, newest
first. Filter by language or source, pull to refresh.
- **Learn**: articles from the enabled Learning sources (engineering blogs,
system design explainers, AI research write-ups) from the last 14 days, newest
first. Learning sources aren't part of the Briefing.
- **Today**: all articles from the enabled News sources in the last 12/24/48 h,
newest first. Filter by language or source, pull to refresh.
- **Learn**: two sections, newest first. **Learning** has posts from the enabled
Learning sources (engineering blogs, system design explainers, AI research
write-ups) from the last 14 days; **Fun** has comics, memes and IT horror
stories from the enabled Fun sources from the last 3 days. Neither is part of
the Briefing.
- **Reading in the app**: tapping an article opens a clean **reader view** (text,
headings, lists, quotes, images) without ads or cookie banners. The globe icon
switches to the **original page** in an in-app WebView, for paywalls or sites
that block reader view. **Summarize with AI** uses the same downloaded text, so
the summary is based on the full article, not just the RSS teaser. Links in the
briefing open the same way.
- **Briefing**: AI picks the 6–10 most important stories of the day, merges
coverage from different outlets, and links every topic to its sources. Every
briefing is saved on the device (`briefings.json` in the app's private
storage); the history button lists them by month, tap to read, swipe to delete
(with undo).
- **Briefing**: AI picks the 6–10 most important stories of the day from the
News sources, merges coverage from different outlets, and links every topic to
its articles. Every briefing is saved on the device (`briefings.json` in the
app's private storage); the history button lists them by month, tap to read,
swipe to delete (with undo).
- **Paid articles and ads hidden**: heise+ and Golem `(g+)` are recognized by
their title; SPIEGEL+ and t3n Pro by a marker in the article page, which the app
checks once per new article in the background (it reads only until the marker,
and remembers results for 14 days). Paid-subscriber posts from Substack newsletters
and remembers results for 14 days). Paid-subscriber posts from Sources on Substack
(Interconnects, Ahead of AI, …) are recognized in the feed itself, where Substack
cuts them off with a "Read more" link. Sponsored posts (`Anzeige:`) are hidden too.
The feed header shows how many were hidden; both filters can be turned off.
The header of Today and of each Learn section shows how many were hidden; both
filters can be turned off.
- **Ad and cookie-banner blocking** in the original-page view: requests to ~80
ad/tracker hosts and the common consent managers (Sourcepoint, OneTrust,
consentmanager, Usercentrics, Didomi, Cookiebot, …) are blocked, and a
@@ -38,16 +41,17 @@ or write a daily briefing. It's meant to replace the n8n → Discord workflow.
same request as Golem's own "Zustimmen" button (`/abo/setconsentcookie.php`,
valid for a day) and reuses the cookie for reader view and the in-app page.
With it off, the app shows the teaser and an "Open website anyway" option.
- **Sources**: 23 curated feeds (13 German, 10 English), toggle each one, or add any
RSS/Atom feed as a News, Learning or Fun source (it's validated before being
added). The tab groups Sources by kind, then by language.
- **Sources**: 42 curated Sources (13 German, 29 English): 23 News, 16 Learning
and 3 Fun sources. Toggle each one, or add any RSS/Atom feed as a News,
Learning or Fun source (it's validated before being added). The tab groups
Sources by kind, then by language.
- **Dark mode**: System / Light / Dark in Settings (applies instantly). The
original-page view follows it too: when the phone is dark, sites use their own
dark design or Android darkens them; when only the app is dark, the app inverts
the page colours and keeps photos and videos as they are.
- **Settings**: AI provider (off / Claude API / n8n webhook), model, summary
language (German/English, whatever the source language), time window, paid/ad
filters, ad and cookie-banner blocking.
language (German/English, whatever the source language), time window for News,
paid/ad filters, ad and cookie-banner blocking.
## Running
@@ -236,8 +240,8 @@ Reddit blocks reader view, so a meme shows the picture from the feed.
```
lib/
main.dart App entry, theme
data/default_sources.dart Curated feed list
models/ Article, Source, DailyBriefing, AppSettings
data/default_sources.dart Curated Source catalog (News, Learning, Fun)
models/ Article, Source and its kind, DailyBriefing, AppSettings
services/
feed_parser.dart RSS 2.0 / RSS 1.0 / Atom parser, date parsing
feed_service.dart Parallel fetching, dedupe, time window
@@ -246,9 +250,17 @@ lib/
claude_summarizer.dart Claude Messages API over HTTP
n8n_summarizer.dart n8n webhook bridge
storage.dart Settings, sources, briefing persistence
paywall_service.dart Paid/sponsored detection (titles + page marker)
paywall_service.dart Paid/sponsored detection (titles, Substack cut-off, page marker)
content_blocking.dart Ad/tracker/consent blocklists for the WebView
consent_service.dart Accepts consent walls (Golem) and keeps the cookies
state/app_state.dart ChangeNotifier holding app state
ui/ Screens (Today, Article, Briefing, Sources, Settings)
ui/
home_shell.dart Tabs: Today, Briefing, Learn, Sources, Settings
feed_screen.dart Today: News articles with language/source filters
briefing_screen.dart Briefing (briefing_history_screen.dart: saved ones)
learn_screen.dart Learn: Learning and Fun sections
sources_screen.dart Sources by kind and language, adding a Source
settings_screen.dart Settings
article_screen.dart Reader view and original page
common.dart Shared helpers and widgets
```