Skip to content

gregce/newsmap-rss

Repository files navigation

NewsMap-RSS

A treemap of the news — but with your own RSS/Atom feeds, not just Google News.

NewsMap renders headlines as colored blocks sized by recency, so the biggest stories are literally the biggest. This fork adds the ability to paste any website or feed URL, group feeds into boards, and watch them in the exact same treemap — colored per source, auto-refreshing, ready to leave on a TV.

Built in response to this r/SomebodyMakeThis post asking for "a NewsMap where you can add your own RSS feeds".

Credits

This is a fork of NewsMap.JS by ijmacd, itself inspired by newsmap.jp. The original repository is published without a license; it's republished here with attribution and extended with custom-feed support. All credit for the original treemap app goes to its author. See LICENSE — the MIT terms cover this fork's own contributions.

What's new in this fork

  • Add any feed by pasting a site address. Paste arstechnica.com (or a raw feed URL) and it auto-discovers the feed via <link> tags, then a common-path fallback. RSS 2.0 and Atom both supported.
  • Boards. Group feeds into named boards that appear alongside the Google News editions. Each feed gets its own color block in the treemap.
  • One-click switching. A board switcher in the header jumps between your boards and Google News from anywhere; the Options panel is organized into My Feeds / Display / Advanced tabs.
  • Resilient. A broken or unreachable feed shows an inline error instead of taking down the whole board.

Feeds to try

Paste any of these into My Feeds → Add a feed. You can paste a plain homepage (it auto-discovers the feed) or a direct feed URL. A good board mixes a few sources so each gets its own colored block.

Paste this What it is
arstechnica.com Tech news — homepage auto-discovery, RSS with images
theverge.com Tech/culture — Atom feed via auto-discovery
https://feeds.bbci.co.uk/news/rss.xml BBC News — direct RSS feed URL
https://feeds.npr.org/1001/rss.xml NPR top stories — direct RSS
https://www.reddit.com/r/worldnews/.rss Reddit r/worldnews — Atom feed
https://hnrss.org/frontpage Hacker News front page — minimal RSS, no images
nasa.gov NASA — homepage auto-discovery
https://github.com/vercel/next.js/releases.atom GitHub releases — Atom

Tip: if a homepage exposes several feeds (comments vs. posts, sections, etc.), you'll get a small picker showing each candidate's URL so you can choose. If nothing is found, paste the site's RSS/Atom URL directly.

How your data is stored

There is no account, no server-side database, and no cookies. Everything you configure — your boards, feeds (name / URL / color / order), selected edition, palette, layout — is saved in your browser's localStorage, scoped to the site origin.

  • It persists across reloads and restarts on the same browser and device.
  • It is per-device: boards don't sync between devices (no backend to sync through).
  • Use Export JSON / Import JSON in the My Feeds tab to back up your boards or move them to another device.

Because the app fetches feeds through a small proxy (see below), the only network calls are: loading the static app, and the proxy fetching the feeds you add.

Running locally

npm install
npm start          # Vite dev server at http://localhost:5173

The dev server includes the feed proxy, so custom feeds work out of the box — no separate backend needed.

Build a production bundle:

npm run build      # outputs to dist/

How it's hosted

This is not a pure static site: browsers can't fetch arbitrary news sites directly (CORS), so the app proxies through a tiny backend. There are two interchangeable implementations of the same proxy logic (feedProxy.js):

Target Google News (/api/*) Custom feeds (/feed)
Vercel (this repo) api/[...path].js api/feed.js (via rewrite)
Vite dev (npm start) vite.config.js proxy feedProxyPlugin
Self-host (server.js) express-http-proxy feedProxyMiddleware

The custom-feed proxy includes an SSRF guard (http/https only; blocks private / loopback / link-local hosts, with DNS-resolution and redirect re-validation) and a 5 MB response cap.

Deploy to Vercel

The repo is Vercel-ready: vercel.json declares the Vite framework, the /feed → /api/feed rewrite, and the SPA fallback. Connect the GitHub repo to a Vercel project and every push deploys. No environment variables are required (the client defaults to /api and /feed on the same origin).

Self-host (Docker)

docker compose up --build   # builds the Vite app and serves it via server.js

server.js serves the built app from static/ and proxies /api + /feed. Optional environment variables: PORT, API_ROOT, FEED_PROXY_ROOT, DONATION_LINK, UPDATE_FREQUENCY, GA_TRACKING.

Using it

  1. Open the app and click Options (or + Add your own RSS feeds).
  2. In My Feeds, create a board, paste a site address, and pick the feed.
  3. Hit View — or use the board chips in the header — to show it in the treemap. Leave it on your TV.

About

A NewsMap news treemap with your own custom RSS/Atom feeds. Fork of ijmacd/newsmap-js, built for an r/SomebodyMakeThis request.

Resources

License

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors