Find your perfect book match for free with Readr.
- 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
- 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.
-
- 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.
- "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
- cookieKey
- DATABASE
- USER_NAME
- USER_PASSWORD
- HOST
- DB_PORT
- PORT