Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

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: !t3stmyPw0rd

If 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).