Giter Site home page Giter Site logo

aloiva / book-recommender Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 25.84 MB

From a database of ratings from users on books, suggest a user a list of books they might like based on the collaborative filtering algorithm.

HTML 0.94% CSS 7.84% JavaScript 31.16% Python 18.30% Jupyter Notebook 41.76%

book-recommender's Introduction

Book Recommendation Engine

From a database of ratings from users on books, suggest a user a list of books they might like based on the collaborative filtering algorithm. The app is built on ReactJS for fast rendering of UI and FastAPI for fast and efficient server performance. Made for Microsoft Engage 2022 Mentorship program.

Features

  1. An efficient recommendation system making use of collaborative filtering algorithm to suggest the current user 10 books that they might like.
  2. Easy switching between FIVE users in the same environment.
  3. Simple and quick click on stars rating system.
  4. Rating system for every user that influences the recommendations real time!!
  5. Fully functioning search feature to search a book with its title, author and even isbn.
  6. Retrieve all the books that the current user has rated so far and in app feature to change them.
  7. Browse books from New York times best sellers and top rated books in genres, all in app while also having an option to rate them.
  8. List the books that are in our huge database.

Tech Stack used

Frontend - ReactJS Backend - FastAPI, a web framework based on Python to build APIs Database - SQLite3, a disk based database packed with Python Standard Library

External API used

Install dependencies

To install dependencies and required packages, clone the repo. Initialise a terminal in the project folder.

Frontend

The following dependencies can also be found in package.json.

  • bootstrap 5.1.3 or above
  • react 18.1.0 or above
  • react-dom 18.1.0 or above
  • react-icons 4.3.1 or above
  • react-responsive-carousel 3.2.23 or above
  • react-router-dom 6.3.0 or above
  • react-script 5.0.1 or above
  • react-slick 0.29.0 or above
  • slick-carousel 1.8.1 or above
  • web-vitals 2.1.4 or above

To install all the packages at once, cd into ./client and run the command

npm install

or

yarn install

Backend

The following packages are required to run the backend. The list can also be found in requirements.txt. Make sure that Python 3.6 or above is installed before running the following commands.

  • pip install fastapi
  • pip install pydantic
  • pip install uvicorn[standard]
  • pip install pandas

Running app

Database

The database can be created at the instance from the .csv files provided (taken from Kaggle) or downloaded. Downloading is suggested. Changes made while the app is being hosted will be reflected locally in the database as well.

Download the database extracted at an instance here into ./server directory

or

Although not suggested due to the amount of resources and time it consumes, to create the initial database, run ./server/makedb.py

Backend

To start running the backend on uvicorn server run the following command in ./server folder.

uvicorn main:app --reload

The server by default runs at http://localhost:8000/

Frontend

To start the frontend, cd into the ./client folder and run

npm start

This will start the app, and run it by default on http://localhost:3000/

Screenshots

Homepage

Homepage

Users page

Users page

Recommendations page

Recommendations

recommendations when the user is changed

Recommendations_other_user

Search page

search page

book-recommender's People

Watchers

Pranava 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.