AI Already Did ItMediaStreaming & Podcasts

daily-news

Daily news for mobile

LicenseMIT
Generated byAnthropic Claude Opus 5 —
Platformsandroid
Rating0/100 (0 ratings) · worked for 0, didn't for 0
Downloads0
Latest version2.0.0 (2026-09-19)
Sourcehttps://github.com/hakansilsupur/daily-news
UploaderHakan
Estimated generation cost335,556 tokens (≈ $2.01) — saved so far: 0 tokens

Screenshots

daily-news screenshot

Description

Local News

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.

Features

Getting started

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-feeds

Publishers 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-feeds before relying on the bundled source list, particularly for the non-Türkiye countries, which were added without any live check.

Project layout

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

Built-in sources

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

Adding a country or source

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.

How fetching works

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.

Downloads

Original prompt(s)

Prompt 1

Can you write a news app which includes local and worldwide news

Prompt 2

can you write build apk
have you done it? i couldn't see the artifact in the repo

Prompt 3

can you add language option

Prompt 4

[X screenshot] can be news selectable among most prefered news like in Twitter as i attached

Prompt 5

save button is below the screen

Prompt 6

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")

Prompt 7

Make Turkey as optional and default, country should be selectable

Prompt 8

Can you make language option (for ex. Türkçe) option make news that language (Türkçe) in preview mode

Prompt 9

Can you add Israel, china, India and japan

Prompt 10

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.

Prompt 11

[screenshot, filter row circled] i meant positionally right of the English as i attached (for preventing misunderstanding)

Prompt 12

[İsrail screenshot] translation doesn't work when change the country as i attached

Prompt 13

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

Prompt 14

[screenshot] There is a bug as can be seen in the attacment

Prompt 15

Actually i thought trend topic news can be independent from the sources selected. is it possible from Twitter for example or other platforms

Prompt 16

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

Prompt 17

Can you add an option to change measurement date and order all measurements by date — later retracted: "I write to wrong place, forget it"

Prompt 18

[Gündem screenshot] There is a translation bug

Prompt 19

[screenshot] Images don't seem in the left box of the sources

Prompt 20

[screenshot] Now seems like that

Prompt 21

[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

Prompt 22

Can you add podcast section among popular ones

Open in AI Already Did It