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!
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.
- 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.
-
- The book will be added to their "To-Read" list.
- The next book suggestion will appear.
-
- The book will be added to their "Not interested" list.
- The next book suggestion will appear.
-
- 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.
-
- 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.
-
- 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
-
- able to add to google calendar
- able to specify friends
- start and end times
- custom hangouts link
- "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
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
-
- A clientID and clientSecret from google for authentication
- To include with developer determined values
- clientID
- USER_NAME
- USER_PASSWORD
- DATABASE=readr
- PORT=3000
- clientSecret
- API_KEY <= from GOOGLE