Skip to content
Find your perfect book match, for free
JavaScript CSS
Branch: master
Clone or download
Pull request Compare This branch is 7 commits behind CheapReaders:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
client
config
sequelize
server
test
.babelrc
.eslintrc.json
.gitignore
.sequelizerc
README.md
_CONTRIBUTING.md
_PRESS-RELEASE.md
_STYLE-GUIDE.md
package-lock.json
package.json
webpack.config.js

README.md

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
You can’t perform that action at this time.