Midreads is a platform for book lovers. Our customers can use our platform to find new books to read, searching from our library of over 10,000 popular titles. Page counts and ratings are included to help our users find what they will love. If a book isn't in our system, users can easily add their own books to the database for everyone to see. Users can also add to their 'read later' list, rate books they have read, and add books to their personal library. When you create an account with Midreads, you can customise your profile with a bio and a profile picture, and connect with your friends to view their profiles. We have a simple, clean design, and designed our website to be easy to use and easy to learn.
- Ensure that you have the latest version of
nodeandnpminstalled on your machine - Clone the repository
- Open your terminal and navigate to the root folder of the project
- Run
npm installin the root folder to install all necessary dependencies and packages cdinto the/packagesfolder- Open a second terminal tab
- In the first tab,
cdinto/express-backendand run the commandnpm run dev - In the second tab,
cdinto/react-frontendand run the commandnpm run dev - Open the link that appears in the second tab after running the command
- You should now be running the Midreads platform locally
We welcome contributions from our fans. Please follow these guidelines when contributing to this project:
- JavaScript/React: We follow the Airbnb JavaScript Style Guide.
- CSS: Follow the BEM (Block Element Modifier) methodology.
- Commit Messages: Use Conventional Commits for clear and consistent commit messages.
Please adhere to the following style guides:
To ensure code quality and consistency, we recommend setting up the following IDE plugins:
-
ESLint: Provides real-time linting for JavaScript/React code.
- Install the ESLint plugin from the Visual Studio Code Marketplace.
- Create or update your
.vscode/settings.jsonfile to include:{ "eslint.validate": [ "javascript", "javascriptreact", "typescript", "typescriptreact" ], "editor.codeActionsOnSave": { "source.fixAll.eslint": true } }
-
Prettier: Ensures consistent code formatting.
- Install the Prettier plugin from the Visual Studio Code Marketplace.
- Create or update your
.vscode/settings.jsonfile to include:{ "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode" }
-
Stylelint: Lints CSS/Sass/Less.
- Install the Stylelint plugin from the Visual Studio Code Marketplace.
- Ensure you have a
.stylelintrcconfiguration file in your project root.
Before submitting a pull request, please ensure that your code passes all linting and tests. You can run the following commands:
# Run ESLint
npm run lint
# Run Prettier
npm run prettier:check
# Run Stylelint
npm run stylelint
# Run Tests
npm testFor the avid reader who wants a virtual library of their reading history, midreads is a website that allows readers to log their books they've read and want to read, rate the books they've read, and see what their friends are reading. Unlike GoodReads, our product is simple to use and doesn't sell user data.
Julian Duran
As a new user I want to create an account so I can login later.
As a returning user I want to login to my account so I can access my data.
As a new user I want to have my own account so I can keep track of my own personal data.
Kylan O'Connor
As a user I want to logout of my account so I can leave my computer safely.
As a concerned user I want to change my password so I can maintain my security.
As a user I want to search for a book so I can see if midreads has it.
Ethan Emery
As a user I want to add a new book to midreads database so I can then interact with it on the website.
As a user I want to add a book to my completed-list so I can track what I've read.
As a user I want to remove a book from my completed-list in case I made a mistake adding it.
Sean Wagoner
As a user I want to add a book to my backlog so I can remember to read it later.
As a user I want to remove a book from my backlog if I don't want to read it anymore.
As a user I want to transfer a book from my backlog to my completed-list so I can keep track of what I've read.
Cole Costa
As a user I want to rate a book so that midreads knows my preferences.
As a social user I want to search for other users profiles so I can find my friends.
As a user I want to view other users profiles so I can compare myself to them.
Colby Watts
As a user I want to view my own profile so I can see my information.
As a security-conscious user I don't want other users to be able to edit my profile so I can maintain my own data.
As a disgruntled user I want to delete my own account so I can control my own data.