Giter Site home page Giter Site logo

mango2juice / bubo-rss Goto Github PK

View Code? Open in Web Editor NEW

This project forked from georgemandis/bubo-rss

0.0 0.0 0.0 194 KB

An irrationally minimalist, static feed reader (RSS, Atom, JSON) you can instantly deploy on Netlify, Glitch or your own server.

Home Page: https://buboreader.com/

License: MIT License

TypeScript 82.56% CSS 2.75% HTML 14.68%

bubo-rss's Introduction

Netlify Status

πŸ¦‰ Bubo Reader

Bubo Reader is a hyper-minimalist feed reader (RSS, Atom, JSON) 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 this project on my blog:

Get 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.

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 you to batch and throttle your feed requests:

  • MAX_CONNECTIONS dictates the maximum number of requests a batch can have going at once.
  • DELAY_MS dictates the amount of delay time between each batch.

The default configuration is no batching or throttling because 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.

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:

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.

Demos

You can view live demos here:

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:

Please share if you would like to be featured!

bubo-rss's People

Contributors

georgemandis avatar dependabot[bot] avatar antoni-devlin avatar ultrox avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.