Giter VIP home page Giter VIP logo

readr's Introduction

Readr

Find your perfect book match for free with Readr.

Readr develops an algorithm unique to each user. The more you use it, the better your book suggestions get!

The tech stack for this app:

first thing to do here is

npm install

  • External API(s) - Google Books (possibly Open Library for epub text)
  • Frontend Framework - React
  • Styling Library - Material UI
  • Server Framework - Express
  • Database - PostgreSQL - (for speed over mySQL) Sequelize ORM
  • Authentication - OAuth -> Google
  • Deployment Platform - Digital Ocean
  • Testing Framework - Mocha Chai
  • Project Management Tool - GitHub Projects

NOTE: Make sure to install the following separateley

npm i gapi

nvm install 10 and nvm use 10 to run the application.

Update pg to version 8

npm install pg@8

User Experience

  • A user logs in with third-party authenication from Google.
  • The first time a user logs in, they will be prompted for their desired username.
  • After completing the questionare, they will see a page with a single book suggestion and short description of the book.
  • The users will see two large button links below the book suggestion
    • "Interested", "Not Interested".
  • The user can click "Interested", "Not Interested"" in the book suggestion
    • This information is saved in a join table in the database with the userID, the book's ISBN, and a boolean value.
  • If the user clicks "Interested":

    • The book will be added to their "To-Read" list.
    • The next book suggestion will appear.
  • If the user clicks "Not Interested":

    • The book will be added to their "Not interested" list.
    • The next book suggestion will appear.
  • If the user clicks "Read Now":

    • The user will be taken to an ePub copy of the book, if avaliable. For this component, we are using ReactReader powerd by ePub.js
    • If not avaliable, they will be directed to an outside link to a public domain copy of the book.
    • If in app, the user should be able to exit the ebook and be back on the suggestion page.
  • If the user clicks "Search Books":

    • The user will be taken to search page where the user can search books based on the title.
    • The search functionality only renders top 10 book results.
    • The user can also add a book from the search to their reading lists.

Reading List

  • When the user clicks on reading list, user will be shown the books the user has interest in

    • A few buttons will appear: each are self explanatory
    • The finished button will add to the users profile. So others can see what books they are reading

Add Friends!

  • When the user clicks on add friends, he will see a search bar to be able to search for friends

Book Club

  • The user will be able to send invites to book clubs to his following friends

    • able to add to google calendar
    • able to specify friends
    • start and end times
    • custom hangouts link

User Book Lists

  • "To-Read"
    • A list of books the user clicked "Interested" on.
    • The user can access their "To-Read" list at any time via a link in the top bar of the app.
    • The user can move a book to the "Not Interested" list.
    • The user can remove a book from the list.
    • A user can click "read now" to start reading the book.
    • A user can sort their list by date added or genre
  • "Not Interested"
    • A list of books the user clicked "Not Interested" on.
    • The user can move a book to the "To-Read" list.
    • A user can remove a book from the list.
    • A user can click "read now" to start reading the book.
    • A user can sort their list by date added or genre

Book Suggestion Algorithm

User Navigation

Database

This app uses PostgreSQL

  • Schema
    • Users table with ID, username
    • Books table with ISBN#, Title, Author, Description, thumbnail Cover image, book url
    • Join table to populate users To-Read list with unique User ID, ISBN#, and Boolean
    • Join table to show relationship between users/followers
To include in environmental variables:
  • .env

    • see .env.example for an example of how to set up environmental variables

readr's People

Contributors

amberjones avatar bunnydunker avatar aveb avatar jadejdoucet avatar btheard3 avatar lschwall avatar royce-reed avatar aterefe avatar hnavar avatar mconner89 avatar tcharles23 avatar rysmith504 avatar csherpa avatar zoobooks avatar velouriagreen avatar dependabot[bot] avatar sbelete01 avatar raymondjjeong 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.