Skip to content

Find your perfect book match, for free

Notifications You must be signed in to change notification settings

Adopt-A-Pothole/Readr

 
 

Repository files navigation

Readr

Find your perfect book match for free with Readr.

The tech stack for this app:

  • 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

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 name, DOB and a short questionare.
  • After completing the questionare, they will see a page with a single book suggestion and short description of the book.
  • The users will see three large button links below the book suggestion
    • "Interested", "Not Interested", and "Read Now".
  • 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.

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:

A clientID and clientSecret from google for authentication To include with developer determined values

  • cookieKey
  • DATABASE
  • USER_NAME
  • USER_PASSWORD
  • HOST
  • DB_PORT
  • PORT

About

Find your perfect book match, for free

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 99.0%
  • CSS 1.0%