Scrollflix is a single page web-application that provides users curated movie recommendation based on how users interact with the landing page, which is the front page. It capture users' scroll behavior on movie posts and make movie suggestion based on the posts' view duration. This repository provides information and overview of back-end for the web application.In this repository you will all the coding from the backend and informtaion on how to run it. However, to get the web application running, front-end should be pulled too. For the application to run competely, both repository need to be pulled.
Related Works
- ElasticSearch: is a tool used in industry to collect data in both logged in users and site visitor.
- Facebook: uses elasticsearch for their News Feed algorithm. By analyzing data points such as likes and content interaction the algorithm can indirectly infer users' intention and provides personal recommendation to enhanced user experience
- Netflix: uses Elasticsearch to recommend content to millions of users by collects a variety of data point (viewing history, rating, scroll activity, navigation, to help users find relevant content)
- Amplitude: provides the API for developer to develop a product analytics dashboard to collect a user engagement data, thus they can provide data insights to stakeholders. To do this, we need to require a redesign the entire architecture from event-base system into a log-base system. What our team trying to do is to make an extension version of amplitude that is: you don't need to redesign your architecture into event base; if you know where to print the log to console.log, we can capture that and still able to use that data for content curation.
Frontend code can be found here.
IMDb Scraper code can be found here.
- Clone the github repository
git clone [email protected]:Harishgeth/movie-suggestions-api.git
-
Install Docker Compose
-
Install Mongo Compass
3.1 If you want to connect to our Mongodb (Mongodb starts up at http://localhost:27018. The default username/password is user/pass for non-m2 machines, but for m2 you just use noauth)
-
To Run Docker
For windows and mac with M1 chip:
# Run Docker with rebuilding the API
make up
# Built and Run Docker
make build-and-up
# Disconnect Docker
make down
For mac with M2 chip:
# Run Docker without rebuilding the API
make up-m2
# Built and Run Docker
make build-and-up-m2
# Disconnect Docker
make down-m2
Please ensure the following ports are available, if not kill applications running on ports.
Ports required by applications to be brought up - 9200:Elasticsearch, 5601:Kibana, 3000-Golang, 27018 - MongoDB.
-
Pull the front-end code from here.
-
Follow the instructions in the frontend repository to run it, and it should automatically recognize the backend.
Clone the github repository
Install Vue CLI
npm install @vue/cli
Create a Vue project
vue create .
Run Vue single-page application
npm run serve
- You can checkout the elasticsearch data at Kibana which runs in the url.. There are two index pattern of interest.
Operational Excellence Logs - filebeat*
Movie curation Index - movie*
Use the Discover tab of Analytics to create a data view with these index patterns described above to see the data :)
- Frontends: Vue.js, HTML, CSS, Javascript, Bootstrap, Mozilla InteractionObserver API.
- Backends: Filebeat, Kibana, ElasticSearch, Vector, Go, Python, MongoDB, Docker.
- Development Tools: VSCode, Postman, ElasticSearch, Docker.
- Teamwork Tools: Slack, Git.