
I read tech news every day. Not because I have to — I genuinely enjoy it. But every site I visited was fighting for my attention with ads, popups, recommended content, and paywalls. I just wanted a clean list of headlines from sources I trust.

A ready-made RSS reader would have solved the problem. But I wanted something I could run anywhere, on any device, without an account or a subscription. So I built my own.

**News** is an open source Progressive Web App that pulls together multiple RSS feeds and presents them as a clean, card-based board. It's live at [news.b65.ch](https://news.b65.ch) and installable on your home screen like any native app.

## What it looks like

On mobile, each article gets its own card — cover image, source tag, title, a short excerpt, and a relative timestamp. Cards stack in a single column. On a tablet or wider screen, they reflow into a proper grid. The layout adapts automatically without any manual breakpoint juggling.

![News on tablet](/storage/news-home-tablet.png)

Pull down to refresh on mobile, or let the app do it on a timer — every minute, every two minutes, or on demand. Everything is cached locally in the browser, so the last loaded articles are always there when you open it again.

![News on phone — dark mode](/storage/news-home-phone-dark.png)

## Adding sources

Hit the gear icon to open settings. You give each feed a name, a URL, and a color. That color shows up as a pill badge on every card from that source, so you can tell at a glance where an article comes from without reading the fine print. Toggle individual feeds on and off without removing them. There's also a full export and import, so your config travels with you to another device without retyping anything.

![Settings — manage your RSS sources](/storage/news-settings-phone.png)

## The stack

Vue 3, Pinia, Vue Router, Tailwind CSS. RSS parsing happens entirely in the browser using native XML — no server-side processing, no heavy framework. The only backend piece is a small CORS proxy running on b65.ch that forwards feed requests. Everything else runs client-side.

Installable as a PWA, works offline (cached articles), no tracking, no account.

## Try it or run it yourself

Open [news.b65.ch](https://news.b65.ch) and add your first feed. That's all it takes.

The source is on GitHub: [simonjenny/News](https://github.com/simonjenny/News). Clone it, run npm install and npm run dev, and you have a local instance in under a minute.
