Giter Site home page Giter Site logo

vibebox's Introduction

Vibebox - Movie Recommendation System

Submission for Microsoft Intern Engage 2022

Recommendation Framework Frontend API Backend

Vibebox is a web application developed for Microsoft Engage 2022. As a part of this program, the mentees were provided with three tracks to choose from: Face Recognition, Data Analysis and Algorithms. I chose the algorithms track and developed a movie recommendation system, Vibebox which uses content based filtering algorithm.

Banner


Table of contents


Technology Stack

html5 css3 javascript python flask firebase

  • HTML, CSS and JavaScript were used for designing the frontend of the application.
  • Python was used to perform data processing and develop the machine learning model.
  • Firebase was used for the database and authentication feature.
  • Flask was used for integrating the frontend and ML model, serving as backend.
    (Back to top)

Incorporating Agile Methodology

Agile methodology is a development strategy being adopted in the software industry. It promotes flexibility and teamwork.

SCRUM is a subset of Agile, a framework for developing software. SCRUM takes advantage of different techniques to achieve goals in Agile. SCRUM promotes an iterative model where the planning is performed on a very short term. The basic time working unit is the sprint. SCRUM teams always reason in sprints and their planning is limited to sprints.

  • Sprint 1 (May 04 - May 08): Sprint Planning and Research - Started researching about what exactly the recommendation system is, how does it work and what are the different types of recommendation engines. Also, checked which recommendation engine is suitable for suggesting movies.

  • Sprint 2 (May 08 - May 12): Design phase - Started with building a basic prototype which was a simple machine learning recommendation system. Planned the UI of the website, tech stack for the project and tried incorporating the tips given by mentor.

  • Sprint 3 (May 12 - May 25): Build phase - Developed the final web application, Vibebox which also had some extra features apart from recommending movies mentioned in Navigating through App.

  • Sprint 4 (May 25 - May 28): Testing phase - Started with doing the UI fixes, did some manual testing and also uploaded the project on Github in this phase.
    (Back to top)


What, How of recommendation engine

Content Based Filtering

The idea behind Content-based recommendation system is to recommend an item based on a comparison between the content of the items and a user profile. In simple words,one may get recommendation for a movie based on the description of other movies.

Similarity Score

Similarity scoring is equivalent to seeking out points in the multidimensional space that are near enough to each other to potentially represent the same true location. It is a numerical value ranging between zero to one which helps to determine how much two items are similar to each other on a scale of zero to one.

Cosine Similarity

Cosine Similarity is a measurement that quantifies the similarity between two or more vectors. The cosine similarity is the cosine of the angle between vectors. The vectors are typically non-zero and are within an inner product space. Smaller angle indicates higher cosine similarity.
(Back to top)


Prerequisites


Getting Started - Installation

  • Clone or download this repository to your local machine.
git clone https://github.com/TechGeek3/Vibebox.git
  • Install all the libraries mentioned in the requirements.txt file with the command pip install -r requirements.txt

  • Get your API key from https://www.themoviedb.org/ by:

    1. Create an account
    2. Click on API from left sidebar
    3. Fill the required details to apply for API Key
    4. In website URL write "NA"
    5. You'll see the API Key once approved
  • Replace YOUR_API_KEY in both the places (line no. 16 and 32) of static/recommend.js file, in line no.8 of api.js and hit save.

  • In order to run the preprocessing files download movies_metadata.csv and credits.csv from Kaggle.

  • Open your terminal/command prompt from your project directory and run the file main.py by executing the command python main.py.

  • Go to your browser and type http://127.0.0.1:5000/ in the address bar.

  • Finally, it's done! Enjoy the website.
    (Back to top)


Navigating through Web Application

Sign Up & Login


User should first register by providing the required credentials and then after successful registration, he/she can login with the previously entered details.

Sign Up Log In

Home Page


After logging in, user will be redirected to the home page of the application where they can explore the movie banners and watch their trailer.

Home Page

Search Movies


User can search movie details by entering the movie name which also has an autocomplete functionality and the respective movie poster along with overview, genres and other information will be displayed.

Search Movie

MovieInfo

Cast Information


One can also see the cast of the movie searched and it can be expanded to get detailed information by clicking on Know More button.

Cast Information

Recommended Movies


After scrolling the person will see the recommended movies based on the entered movie which is done with the help of ML model.

Recommended Movies

Sentiment Analysis


Reviews of different users can also be found for the given movie.

Sentiment Analysis

Genres Based Filtering


In the home page, there are various categories based on genres of the movie.

Genre Based Filtering

Trending Movies


Trending movies are also updated in the home page by using TMDB API.

Trending Movies

Logout


Finally the user can logout with the option given in the navbar after exploring the website.

Logout


(Back to top)


Useful Links


Resources Used


Sources of datasets


Need Help?

Feel free to drop a mail on [email protected]
Linkedin Twitter
(Back to top)


vibebox's People

Contributors

techgeek3 avatar

Watchers

 avatar

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.