Giter VIP home page Giter VIP logo

tagcloud's Introduction

PTC - Political Tag Cloud - Tagcloud.online

A facelift of the Software Engineering project from Findwise, originally conducted in 2016. The tagcloud is a website where the hashtag usage is displayed in a tag cloud, divided by which political parties the account is following:

Architecture

The project is divided in a bunch of different microservices.

  • Index service
  • Search service
  • Frontend service

The index service

The index service is responsible for fetching tweets and inserting them into Elastic. The service is divided into the following tasks:

  • FollowerFetcher
  • TweetFetcher
  • TweetIndexer

The follower fetcher

The follower fetcher is written in golang and is populating the followers folder inside the config folder. There, files will be found that contains a list with the followers for the account with the same ID as the file name.

The Tweet fetcher

The Tweet fetcher is fetching tweets from the accounts specified in the files inside the followers folder, found in the config folder. The data is sent to RabbitMQ

The Tweet indexer

The indexing function is consuming from RabbitMQ and inserting the data into Elastic

The Search service

The search service is serving the endpoints for the frontend and is delivering data from Elastic

The Frontend service

The frontend service is the static files that forms the frontend seen by the users and is communicating with the search service in order to retrieve data

RabbitMQ

To use RabbitMQ, start the container with

docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5671:5671 -p 5672:5672 rabbitmq:3-management

The ports are used to map ports between the container and your local machine

http://localhost:15672

Default Username/Password

guest/guest

Elastic

To pull the container

docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.1

Start the container with

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.1

tagcloud's People

Contributors

myrsmeden avatar

Watchers

David avatar Filip Johansson avatar  avatar

tagcloud's Issues

Firewall on Digital Ocean Web Interface?

I've tried the following:

  • sudo reboot
  • Opened Nginx HTTP in ufw
  • Close docker with docker-compose downin /var/www/tagcloud.onlineto see if Docker is blocking nginx in some way.

Apparently there is a firewall that can be activated throug the web interface on Digital Ocean. Is that active for this droplet?

ui.bootstrap error

I get this error when cloning the repo and running docker-compose up:
screen shot 2018-08-21 at 23 02 35

It seems like the library ui.bootstrap is not correctly imported in index.js

Problem with router path /client

If the main route is /client, the react build cant read the build files which is referred to as
http://localhost:8080/static/js/something... They are actually located in http://localhost:8080/client/static/js/something... There might be a way to tweak the react build, or if possible (and even better) we should consider to serve the front end folder on /

New frontend

I'm thinking we have two options for the new frontend.
Either we create a separate repo and just drag the build-folder to the frontend folder so we dont need to commit all the dev files in the repo (and not to the droplet either. Or we just put everything in the current tagcloud repo. Your call Johan. How do you want it?

tweet indexer and search service fails to connect to elastic search

after running docker-compose up we get:

tweetindexer_1   | 
2018/08/26 15:17:19 health check timeout: 
Head http://elasticsearch:9200: dial tcp: lookup elasticsearch on 127.0.0.11:53: 
server misbehaving: no Elasticsearch node available

and

searchservice_1  | 
2018/08/26 15:17:20 health check timeout: 
Head http://elasticsearch:9200: dial tcp: lookup elasticsearch on 127.0.0.11:53: 
server misbehaving: no Elasticsearch node available

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.