Binged Project

Binged

Discover, connect, and dive into your next favorite book – powered by community and personalized recommendations using Binged.

Overview

A dynamic book discovery platform powered by AI that lets users swipe through book summaries to uncover their next great read. The platform learns from user preferences, using likes and dislikes to curate a personalized explore feed with book recommendations. Books can be saved to a wishlist and mark as complete once finished reading. The user can review, rate, and share with friends. The app has integrated social features to allow users to connect, view other user profiles, and comment on their activities. Although still in development, the core functionalities are complete, with more exciting features on the way!

Role

Fullstack Developer

Timeline

June 2024 - August 2024

Ideation

Why Binged?

As a book enjoyer since childhood, I’ve fell into periods of having zero motivation or interest in any books and struggling to get back into it. I wanted to create a platform like ‘Tinder’ or ‘Hinge’ where people can reignite their passion for reading using this recommendation based website. Other websites such as Goodreads are well done, but they may feel outdated and not as interactive as this website.

Demo!

Tech Stack & Features & Development

Features:

  • Registration & Login: Based on sessions for each user whose id is based on their email
  • Initial quiz: User has to click 5 books they have read or are interested in.
  • Home: Displays wishlist books and completed books.
  • Explore: AI Powered Book Recommendation system where user can dislike or like books that appear on feed.
  • Wishlist: Initial 5 books from quiz and liked books are stored in this 'shelf' where user can preview the book, remove them, or add them to completed books.
  • Completed Books: Users can rate and review their completed books. They can edit these later as well.
  • Profile: Display an avatar, username, friends, favorite book, currently reading book, and completed books along with their ratings, reviews, and comments.
  • Profile Logout & Edit: User can logout using the top right button. The edit button under logout allows user to change their avatar, favorite book, and currently reading.
  • Friends: Can send, receive, and accept friend requests. Friends can comment on each other's ratings.
  • Profile Visibility: Anyone can see other people's public profiles with all the displayed features, but non-friends cannot comment on another user's completed books.
  • MongoDB Atlas AWS Database Storage: Allows for users to change and edit their account-related information and shelves which are connected and automatically updated through the DB.

Backend:

  • Goodreads-WebScraper: Contributed to Open-Source Goodreads-Scraper (https://github.com/maria-antoniak/goodreads-scraper) as it was outdated (Not Updated on Repo Yet). Updated the python script and utilized what my website needed.
  • Flask: Python-based web development framework
  • MongoDB Atlas AWS Database: Cluster created for storing & pulling book and user data.
  • Google OAuth 2.0 (Not currently available on the website): Implemented but due to cookie issues I opted to use registration with Flask for the production site.
  • AI/ML Models with NLP techniques
  • [1] Content-Based Filtering Machine Learning Model for Book Recommendations:

    Tools such as pandas and numpy are used for data handling such as one-hot encoding book genres. Sklearn was used for scaling and text-vectorization (TF-IDF). Then using the transformed and scaled information, the model calculates the similarities between books using cosine similarity based on several features like genres, summaries, and the users first 5 liked books. This model is only used once at the beginning when the user first creates their accound to recommend books based on the first 5 books the user likes.

    [2] Collaborative Filtering for Updating User Explore Feed for Book Recommendations:

    Pandas utilizes data from MongoDB and then sklearn is used to preprocess data using a LabelEncoder. This converts categorical user data and Book ID's into numerical values to exist in a user-item matrix. Matrix Factorization, specifically Singular Value Decomposition (SVD), done by scipy is used to decomposes the user-item matrix into factors that represents user preferences and book characteristics. This predits the potential ratings for the books the user has not interacted with. This model curates the users explore feed by filtering out books the user has interacted with and putting the most recommended books for the user at the beginning of the explore feed list stored on MongoDB for each user. This is done after each interaction on the explore feed as it users the user's interactions of dislikes and likes.

Frontend:

  • React.js
  • Tailwind CSS
  • Different React frontend API's such as @heroicons/react/24/outline, react-icons/fa, react-router-dom, axios, etc.