AI Already Did It › Media › Streaming & Podcasts
Daily news for mobile
| License | MIT |
|---|---|
| Generated by | Anthropic Claude Opus 5 — |
| Platforms | android |
| Rating | 0/100 (0 ratings) · worked for 0, didn't for 0 |
| Downloads | 0 |
| Latest version | 2.0.0 (2026-09-19) |
| Source | https://github.com/hakansilsupur/daily-news |
| Uploader | Hakan |
| Estimated generation cost | 335,556 tokens (≈ $2.01) — saved so far: 0 tokens |

A cross-platform mobile app (iOS, Android, web) that pulls headlines from public RSS/Atom feeds and lets you filter them by country, by worldwide coverage, and by individual source. No API keys, no backend: the app talks to publishers' feeds directly and keeps everything on the device.
Built with Expo (SDK 57) + React Native + TypeScript.
Worldwide (international outlets),
or All (the country plus worldwide). All deliberately does not pull all 13
countries at once, which would make the timeline unreadable.Select all / Clear shortcuts.ANKARA matches Ankara, and ISTANBUL, İSTANBUL,
istanbul and ıstanbul all match İstanbul (Turkish lowercases ASCII I
to dotless ı, so the dotted and dotless forms are folded together).npm install
npm start # then press i / a, or scan the QR code with Expo Go
Other scripts:
npm run android # open on an Android device/emulator
npm run ios # open on an iOS simulator (macOS only)
npm run web # run in a browser
npm run typecheck # tsc --noEmit
npm test # unit tests for the feed parser and merge/search logic
npm run check-feeds # live health check of every built-in feed URL
npm run check-feedsPublishers retire and move RSS endpoints regularly. This script fetches every built-in source and prints what came back:
TR trt-haber OK 40 articles (40 dated, 38 with images) — …
WW reuters-agency FAIL HTTP 404
The prefix is the source's scope — an ISO country code, or WW for worldwide.
Run it on a machine with unrestricted network access, then prune or replace
anything reported as FAIL or EMPTY in src/data/sources.ts.
Note: none of the built-in feed URLs were verified against the live internet during development — the build sandbox blocked all outbound traffic to news domains. The parser and the filtering logic are covered by unit tests against RSS 2.0, Atom and RDF fixtures, but the URLs themselves are best-effort. Run
npm run check-feedsbefore relying on the bundled source list, particularly for the non-Türkiye countries, which were added without any live check.
App.tsx app shell: tabs, theme, filter + country sheets
src/
types.ts CountryCode / SourceScope / ScopeMode / Article
theme.ts light + dark palettes
data/
countries.ts country list, default country, scope labels, search
sources.ts built-in feeds, tagged by scope and category
services/
rss.ts fetch + parse RSS 2.0 / RSS 1.0 (RDF) / Atom
newsService.ts parallel fetch, dedupe, sort, search, timestamps
text.ts Turkish-aware case folding for search
openArticle.ts in-app browser with system-browser fallback
storage/prefs.ts AsyncStorage persistence (filters, custom feeds, saves)
hooks/useNewsApp.ts all app state in one hook
components/ ArticleCard, ScopeTabs, CountryPickerSheet, …
screens/ FeedScreen, SavedScreen
tests/feed.test.mts parser + merge/search/format unit tests
tests/scope.test.mts country selection + scope filtering unit tests
scripts/check-feeds.mts live feed health check
| Country | Sources |
|---|---|
| 🇹🇷 Türkiye (default) | Anadolu Ajansı, TRT Haber, Hürriyet, Sözcü, Cumhuriyet, NTV, BBC News Türkçe, Bianet, Dünya Gazetesi, Webrazzi, Fanatik |
| 🇺🇸 United States | NPR, The New York Times, The Verge, ESPN |
| 🇬🇧 United Kingdom | BBC News UK, The Guardian UK, Sky News, The Independent |
| 🇩🇪 Germany | Tagesschau, Der Spiegel, Die Zeit, Deutsche Welle |
| 🇫🇷 France | Le Monde, France 24, Le Figaro, Libération |
| 🇪🇸 Spain | El País, El Mundo, RTVE |
| 🇮🇹 Italy | ANSA, la Repubblica, Corriere della Sera |
| 🇳🇱 Netherlands | NOS, NU.nl |
| 🇮🇳 India | The Times of India, The Hindu, NDTV |
| 🇯🇵 Japan | NHK World, The Japan Times |
| 🇧🇷 Brazil | G1, Folha de S.Paulo |
| 🇨🇦 Canada | CBC News, The Globe and Mail |
| 🇦🇺 Australia | ABC News, The Sydney Morning Herald |
| 🌍 Worldwide | BBC World, Al Jazeera, The Guardian World, NPR World, Deutsche Welle World, France 24 English, Euronews, Reuters Agency, CNBC, Ars Technica |
Each entry in src/data/sources.ts carries an id, scope, category and
feedUrl, where scope is either an ISO country code or 'world'. Adding a
source is a one-line edit — but keep existing ids stable, since they are what
user filter preferences are stored against.
To add a country, extend the CountryCode union in src/types.ts and the
COUNTRIES array in src/data/countries.ts, then give it at least one source.
A test asserts that every shipped country has one, so a half-added country fails
the suite rather than showing an empty feed.
useNewsApp derives the active source set from the scope (selected country /
worldwide / both) plus the per-source toggles, then refetches whenever that set
changes (keyed on sorted source ids, so re-renders don't cause redundant network
calls). Each feed gets its own AbortController with a 12-second timeout;
Promise.all over fetchAllFeeds never rejects, so one dead publisher degrades
to a warning line instead of an empty screen.
Articles are deduplicated on the link with its query string and fragment stripped, which collapses the same story arriving from two feeds.
Can you write a news app which includes local and worldwide news
can you write build apk have you done it? i couldn't see the artifact in the repo
can you add language option
[X screenshot] can be news selectable among most prefered news like in Twitter as i attached
save button is below the screen
can you add auto search and find the news' sources for both local and worldwide to add sources section (typed three times — you interrupted and retyped twice, once to fix "ABD" → "and", once to add "to add sources section")
Make Turkey as optional and default, country should be selectable
Can you make language option (for ex. Türkçe) option make news that language (Türkçe) in preview mode
Can you add Israel, china, India and japan
I think Turkish word (right of the English) only should be used for translation. And translation should be only Turkish or the language is selected. And Turkish should be optional and default. Anyone can change the translation language.
[screenshot, filter row circled] i meant positionally right of the English as i attached (for preventing misunderstanding)
[İsrail screenshot] translation doesn't work when change the country as i attached
Can you add a section side of the news' (leftest) as trend topic news most watch news here in Turkey or world according to which one is selected
[screenshot] There is a bug as can be seen in the attacment
Actually i thought trend topic news can be independent from the sources selected. is it possible from Twitter for example or other platforms
Can you adjust trend topics section according to.country selection? For example app should show if Turkey is selected Turkish news, if world is selected out of Turkish news
Can you add an option to change measurement date and order all measurements by date — later retracted: "I write to wrong place, forget it"
[Gündem screenshot] There is a translation bug
[screenshot] Images don't seem in the left box of the sources
[screenshot] Now seems like that
[Haberler screenshot, search box circled] Can you add search a topic option among the news which is not listed but from api. That search option is already in the screen but needed to add this capability
Can you add podcast section among popular ones