Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gaitherdb/book-search-engine
A web application that allows a user to search for books. A user can save the book details to their profile, or remove them by a click of a button.
https://github.com/gaitherdb/book-search-engine
graphql-api heroku-deployment jwt-authentication localstorage mern-stack mongodb react
Last synced: 5 days ago
JSON representation
A web application that allows a user to search for books. A user can save the book details to their profile, or remove them by a click of a button.
- Host: GitHub
- URL: https://github.com/gaitherdb/book-search-engine
- Owner: Gaitherdb
- Created: 2021-10-26T21:37:15.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-11-02T03:31:43.000Z (over 3 years ago)
- Last Synced: 2024-12-04T10:12:01.318Z (2 months ago)
- Topics: graphql-api, heroku-deployment, jwt-authentication, localstorage, mern-stack, mongodb, react
- Language: JavaScript
- Homepage:
- Size: 60.5 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Book-Search-Engine
## ![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
## Description
A web application that allows a user to search for books. A user can save the book details to their profile, or remove them by a click of a button. This application is created using a MERN stack, which means I use a MongoDB database, Express.js to communicate with the browser, React to create the front-end, and Node to create the backend. The search data comes from a Google REST API, but the gathered data uses GraphQL API endpoints to communicate with the MongoDB database. User-authorization is handled by JSON Web Tokens and saved to the browser through local storage.This app makes use of a few node modules to make the development easier, including: Express, Mongoose, Apollo-Server-Express, Bcrypt, jsonwebtoken and graphql. This app makes use of:
* Node.js and Express.js to create a single RESTful API for google books api
* Apollo-Server-Express and GraphQL to make GraphQL API endpoints
* Queries and Mutations to interact with the database from front-end
* typeDefs and Resolvers to recieve data from front-end on the back-end and communicate with the database
* MongoDB (noSQL) and Mongoose OMT for the database
* JWT for authorization of logged in users
* Bcrypt for encrypting password information## Table of Contents
* [Installation](#installation)
* [Usage](#usage)
* [License](#license)
* [Contributing](#contributing)
* [Questions](#questions)
## Installation
To install Node.js, follow the documentation [Node.js](https://coding-boot-camp.github.io/full-stack/nodejs/how-to-install-nodejs)To install MongoDB, follow the documentation [MongoDB](https://docs.mongodb.com/manual/installation/)
To install necessary dependencies, run the following command:
```
npm run install
```
## Usage
Access the webpage by going to the deployed site: [Book-Search-Engine](https://bloodcurdling-beast-94043.herokuapp.com/).
Test account: email: [email protected] password: !t3stmyPw0rdIf you want to run this on a local server, set the path to the Book-Search-Engine folder in the terminal. Run the entire app by typing `npm run develop`. Go to http://localhost:3000 to accesss the app and http://localhost:3001/graphql to acess the GraphQL endpoint.
![SearchBooks](https://user-images.githubusercontent.com/83731627/139782593-c3dd8b03-1d87-4f15-ad91-850f7245646c.png)
![viewsavedbooks](https://user-images.githubusercontent.com/83731627/139782601-4e40080d-b99d-4863-8c3d-7fb0072b0b52.png)
![logingooglebooks](https://user-images.githubusercontent.com/83731627/139782605-928dcf57-760b-4e0d-8450-97f893760586.png)## License
This project is licensed under the terms of the [MIT License](https://opensource.org/licenses/MIT).## Contributing
I am the sole author of this repo (with help from UoR activities) and I am not currently looking for contributors.## Questions
If you have any questions about the repo, open an issue or contact me directly at [email protected]. You can find more of my work at [Gaitherdb](https://github.com/Gaitherdb).