:new:An online news scraping and recommendation system which involves a React+Redux front end, a Node.js backend, a Python RPC server, a data pipeline and a tensorflow topic modeling server.
Tap-News is a complex web application for users to view latest news around the globe. It is consist of a React+Redux front-end, multiple backend services including RESTful servers and RPC servers, a MongoDB database, a news scraper using Python Scrapy package as well as multiple cloud RabbitMQ message queues. In addition, the web application implements the functionality of classifying news by topics and recommending news according to user preference with time decay model.
Tap-News uses a number of open source projects to work properly:
Tap-News requires Docker to run.
Start the Docker Daemon, install the dependencies and devDependencies and start the service.
$ cd Tap-News
$ docker-compose build
$ docker-compose up
Alternatively, each component can be started manually, though no bash script shortcut is provided. In addition, dependencies for each component must be installed beforehand.
For example, to run backend server
cd backend_server
pip install -r requirements.txt # install necessary packages
python service.py # or python3
Tap-News is completely dockerized for easier deployment with docker-compose.
Every components of this application is run as a container and these containers are connected by the docker network driver specified in the docker-compose.yml.
The data related containers (MongoDB, redis) are all mounted to the local data directory for data persistency.
Since the application has more than six different components, the workflow of the application can be quite confusing at times.
The following diagram shows how these components work together to present news for users.
We use git for versioning. For the versions available, see the tags on this repository.
Adapted from CS503 project of Bittiger.com
This markdown file is created using dillinger.io, which is a great online markdown editor tool.