Owen's Gravatar Owen Ryan
Informinator thumbnail

News aggregator built with React and TypeScript

Project Source Code

Informinator

Informinator is a web-based news aggregator that acts as a central place to catch up on current events.

Features

Origins

During the spring 2023 semester, two separate classes I was taking had weekly news quizzes that checked that you had been following current events. I decided that the best way to study for these quizzes was to create a news aggregator to simplify the process of looking at several news outlets per day.

The original version of Informinator was hacked together in a weekend and worked much differently than the current version. It was written entirely in Python using Aiohttp as the webserver and jinja as the template engine. The server did everything from Parse RSS to render HTML, which led to 5+ second load times as every RSS feed had to be fetched before HTML was returned. It also only pulled feeds from RSSHub, and thus only featured stories from BBC News, Al jazeera, The Associated Press, and Op-eds from The Guardian.

Over the summer of 2023, the entire site was rewritten as a single-page React application, which reduced hosting complexity and made the site more responsive.

Privacy

Informinator aims to be a privacy-friendly solution for news aggregation. Some information is inadvertently collected to prevent spam, but it can be entirely avoided by self-hosting.

The official Informinator instance collects the following information

  • IP address when you load the page - This is logged by the webserver and used to identify Denial-Of-Service (DOS) and similar attacks.
  • IP address and RSS feed URL when using the official informinator proxy to load articles - Again used for detecting abuse.

Current issues

The first version of Informinator was hacked together over a weekend, so some design choices are suboptimal. Some of these include:

  • All articles are loaded on page-load, even though most are hidden behind the carousel.
  • Informinator’s RSS parsing code only supports feeds from RSSHub.
    • RSSHub’s New York Times English feed is currently unusable due to a parsing error.
  • All articles are cached in Python when an in-memory database such as Redis would greatly improve performance.

Roadmap

Informinator’s public roadmap can be found here.