All Projects → georgemandis → bubo-rss

georgemandis / bubo-rss

Licence: MIT License
An irrationally minimalist, static RSS feed reader you can instantly deploy on Netlify, Glitch or your own server.

Programming Languages

typescript
32286 projects
HTML
75241 projects
CSS
56736 projects

Projects that are alternatives of or similar to bubo-rss

Netnewswire
RSS reader for macOS and iOS.
Stars: ✭ 5,105 (+12351.22%)
Mutual labels:  rss, rss-reader, feed-reader, json-feed
reader
A Python feed reader library.
Stars: ✭ 290 (+607.32%)
Mutual labels:  rss, rss-reader, feed-reader, json-feed
News
📰 RSS/Atom feed reader
Stars: ✭ 524 (+1178.05%)
Mutual labels:  rss, rss-reader, feed-reader
Newsblur
NewsBlur is a personal news reader that brings people together to talk about the world. A new sound of an old instrument.
Stars: ✭ 5,862 (+14197.56%)
Mutual labels:  rss, rss-reader, feed-reader
FeedReader
C# RSS and ATOM Feed reader library. Supports RSS 0.91, 0.92, 1.0, 2.0 and ATOM. Tested with multiple languages and feeds.
Stars: ✭ 221 (+439.02%)
Mutual labels:  rss, rss-reader, feed-reader
buran
Bidirectional, data-driven RSS/Atom feed consumer, producer and feeds aggregator
Stars: ✭ 27 (-34.15%)
Mutual labels:  rss, rss-reader, feed-reader
Neix
neix - a RSS/Atom feed reader for your terminal.
Stars: ✭ 128 (+212.2%)
Mutual labels:  rss, rss-reader, feed-reader
Stringer
A self-hosted, anti-social RSS reader.
Stars: ✭ 3,362 (+8100%)
Mutual labels:  rss, rss-reader, feed-reader
Feedreader
C# RSS and ATOM Feed reader library. Supports RSS 0.91, 0.92, 1.0, 2.0 and ATOM. Tested with multiple languages and feeds.
Stars: ✭ 180 (+339.02%)
Mutual labels:  rss, rss-reader, feed-reader
webfeed
A dart package for parsing RSS & Atom feed
Stars: ✭ 92 (+124.39%)
Mutual labels:  rss, rss-reader, feed-reader
Feedek
FeedEk jQuery RSS/ATOM Feed Plugin
Stars: ✭ 190 (+363.41%)
Mutual labels:  rss, rss-reader, feed-reader
Newsbeuter
Newsbeuter is an open-source RSS/Atom feed reader for text terminals.
Stars: ✭ 783 (+1809.76%)
Mutual labels:  rss, rss-reader, feed-reader
Pluto
pluto gems - planet feed reader and (static) website generator - auto-build web pages from published web feeds
Stars: ✭ 174 (+324.39%)
Mutual labels:  rss, rss-reader, feed-reader
RSS-to-Telegram-Bot
A Telegram RSS bot that cares about your reading experience
Stars: ✭ 482 (+1075.61%)
Mutual labels:  rss, rss-reader, feed-reader
json-feed-viewer
The world's first JSON feed viewer 🥇
Stars: ✭ 40 (-2.44%)
Mutual labels:  rss, rss-reader, json-feed
JARR
JARR is a web news aggregator.
Stars: ✭ 99 (+141.46%)
Mutual labels:  rss, feed-reader
tidyRSS
An R package for extracting 'tidy' data frames from RSS, Atom, JSON and geoRSS feeds
Stars: ✭ 62 (+51.22%)
Mutual labels:  rss, json-feed
Feed-on-Feeds
FeedOnFeeds is a lightweight server-based RSS feed aggregator and reader
Stars: ✭ 52 (+26.83%)
Mutual labels:  rss, rss-reader
temboz
The Temboz RSS/Atom feed reader
Stars: ✭ 59 (+43.9%)
Mutual labels:  rss-reader, feed-reader
vuepress-plugin-feed
RSS, Atom, and JSON feeds generator plugin for VuePress 1.x
Stars: ✭ 46 (+12.2%)
Mutual labels:  rss, json-feed

Netlify Status

🦉 Bubo Reader (2.0)

Bubo Reader is a hyper-minimalist RSS and JSON feed reader you can deploy on your own server, Netlify in a few steps or Glitch in even fewer steps! The goal of the project is to generate a webpage that shows a list of links from a collection of feeds organized by category and website. That's it.

It is named after this silly robot owl from Clash of the Titans (1981).

You can read more about how this project came about on my blog:

Getting Started

  • Clone or fork the repo and run npm install to install the dependencies.
  • Update feeds.json to include categories and links to feeds you would like to see.
  • Run npm run build:bubo

That's it! You should now have a static page with links to the latest content from your feeds in the public folder, ready to serve.

Differences in Bubo 2.0

Version 2.0 has introduced some substantial changes for Bubo! While the static output remains endearingly spartan, the engine that builds it has changed a bit.

Hopefully all of these changes are in services of making this project more useful to others and encouraging outside contributions.

Changes of note:

  • Bubo has been rewritten in TypeScript. It's pretty slick! I anticipate the typing could be improved, but it's a start.
  • You fill find an .nvmrc file in the root of this project. Learn more about nvm if you're unfamiliar.
  • The script will actually write your index.html file for you (Previously the build script simply ran node src/index.js > output/index.html). It makes a strong assumption that this file lives in the public folder.
  • There is a somewhat sophisticated mechansim in-place for batching & throttling your requests, if needed.

Anatomy of Bubo Reader

The static pieces:

  • conf/feeds.json - a JSON file containing your feed URLS separated into categories.
  • config/template.html - a Nunjucks template that lets you change how the feeds are displayed. This can be changed to anything else you like— see below.
  • public/style.css - a CSS file to stylize your feed output.
  • public/index.html - The HTML file that gets automatically generated when Bubo is run.

The engine:

  • src/index.ts - The primary script you run when you want to build a new version of Bubo. It will automatically fetch the latest content from your feeds and build a new static file at public/index.html.
  • src/renderer.ts — The renderer that loads Nunjucks, the template and understands how to process the incoming feed data. Prefer something else? This is the place to change it!
  • src/utilities.ts — A variety of parsing and normalization utilities for Bubo, hidden away to try and keep things clean.

Throttling

In the main index.ts file you will find two values that allow yout to batch and throttle your feed requests:

  • MAX_CONNECTIONS dictates the maximium number of requests a batch can have going at once.
  • DELAY_MS dictates the amount of de;ay time between each batch.

The default configuration is no batching or throttling beacuse MAX_CONNECTIONS is set to Infinity. If you wanted to change Bubo to only fetch one feed at a time every second you could set these values to:

const MAX_CONNECTIONS = 1;
const DELAY_MS = 1000;

If you wanted to limit things to 10 simultaneous requests every 2.5 seconds you could set it like so:

const MAX_CONNECTIONS = 10;
const DELAY_MS = 2500;

In practice, I've never really run into an issue leaving MAX_CONNECTIONS set to Infinity but this feels like a sensible safeguard to design.

Demos

You can view live demos here:

Not the most exciting-looking demos, I'll admit, but they work!

Getting Started

Deploying to Glitch

The quickest way is to remix the project on Glitch: https://glitch.com/edit/#!/bubo-rss

There is also a glitch branch on this repo if you'd prefer to start there.

Just change some feeds in ./config/feeds.json file and you're set! If you'd like to modify the style or the template you can changed ./public/style.css file or the ./config/template.html file respectively.

Deploying to Netlify

The deploy settings should automatically import from the netlify.toml file. All you'll need to do is confirm and you're ready to go!

Keeping Feeds Updated

Using Netlify Webhooks

To keep your feeds up to date you'll want to setup a Build Hook for your Netlify site and use another service to ping it every so often to trigger a rebuild. I'd suggest looking into:

Using GitHub Actions

Coming soon—there is an old branch that demonstrates this, but it needs to be revisisted in light of Bubo 2.0.

Rolling Your Own

If you already have a server running Linux and some command-line experience it might be simpler to setup a cron job.

Support

If you found this useful please consider sponsoring me or this project.

If you'd rather run this on your own server please consider using one of these affiliate links to setup a micro instance on Linode, Digital Ocean or Vultr.

Showcase

Here are some websites using Bubo Reader:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].