GUI News Feed
Phase 1 — Source adapters & fetching
- Implement 4+ adapters (e.g., Reddit, BBC RSS, Google News RSS, Hacker News)
- Query by topic, request with timeouts, and parse RSS/JSON
- Normalize common fields like
title,source,urlorpublished_at - Create a simple CLI to test adapters
Functional result: A test run fetches N recent items per source for a topic and prints normalized entries with correct fields.
Phase 2 — Merge, sort & de-dup
- Merge adapter results into one list
- De-duplicate by canonicalized URL/title fingerprint
- Sort the results (most recent first)
- Optional tiny in-memory cache (TTL) to avoid refetch storms
Functional result: A single merged feed shows unique, newest-first items that match the topic across all sources.
Phase 3 — GUI browsing (Tkinter)
- Topic entry + “Refresh” button
- Paginated (or scrollable) list of headlines with source and time
- Detail pane with summary and “Open in browser” action
- Non-blocking fetch (thread/async) with a busy indicator
Functional result: User searches a topic; the UI refreshes without freezing and displays clickable, de-duplicated articles from all sources.
Phase 4 — Auto-refresh & minimal errors
- Optional auto-refresh interval (e.g., 5–15 min) with “Last update” status
- Brief error banner on fetch failure; keep last good results
Functional result: The app periodically refreshes when enabled, shows the last update time, and gracefully warns on failures while remaining usable.