Homepage

Worldwide news multiplexer and translator


EcheloNews is a news multiplexer; basically, it fetches news from all over the world, classifying them by topic and giving them back to users according to their preferences.

Copyright (c) 2020 Nicola Colao
Copyright (c) 2020 Paolo Lucchesi
Copyright (c) 2020 Dejan Nuzzi
EcheloNews is released under the MIT license

Documentation

RESTful APIs

EcheloNews internal and external RESTful APIs are designed and built as a set of OpenAPI3 YAML specifications. To view them, you can visit the following links:

Libraries and Programming APIs

Libraries (and code portions in general) are documented with JSDoc; the documentation is available at the following links:

Architecture

EcheloNews is designed as a set of loosely coupled modules, which can be easily turned into microservices. The architecture is described as follows:

NOTE:

  • Red edges represents external interactions
  • Green edges represents internal RESTful calls
  • Orange edges represents internal AMQP calls

Modules

RESTful API

The main EcheloNews interface, built on top of standard HTTP verbs with the REST paradigm and delivered as SaaS. It interfaces with a plethora of separated, independent microservices to provide EcheloNews functionalities.

Web Frontend

A website frontend, built on top of the RESTful API; in practice, it uses the API as it were an external service, being almost completely separated from the infrastructure.

User sessions are implemented using the JWTs generated by the RESTful API as stateless session cookies.

OAuth users are handled directly, as user authentication through the provider must be performed using a browser. However, by interfacing with the OAuth bridge, the frontend is not aware of any user implementation detail.

News fetcher

Fetch news via the RSS protocol from various websites (with long-time polling), and pass them to the news organizer as a JSON object.

A last-fetched timestamp is used in combination with the If-Modified-Since HTTP header to avoid fetching (and wasting computational resources with) obsolete news.

News organizer

Organize news and save them in a permanent data structure (e.g. SQL database), offering a simple RESTful service.

Using a separated module to organize and store the news makes the EcheloNews infrustructure much more scalable and, on top of all, resilient. Let’s say a new module which fetches news doing web scraping is introduced; the only thing to do in that case is develop it separately and plug it into the organizer.

This sticks with and satisfies the Open Close Principle (one should need to just add and not to modify).

News multiplexer

Multiplex news according to topic or category and return them to a user interface microservice (on-demand). The news multiplexer calls the Google Cloud Translate API to translate news feeds’ description and title

OAuth Bridge

Act as a bridge between the Web Frontend and the User Handler. This way, the frontend does not need to know anything about the way inwhich JWT tokens are generated, nor to access the database in any way.