- https://opensource.org/licenses/MIT
The Book-Search-Engine is a full-stack web application that allows users to search for books using the Google Books API and save their favorite books to a personal list. The application is built with a React frontend and an Express/Node.js backend, and it uses MongoDB for data storage. Users can create an account, log in, search for books, and manage their saved books. The application also features JWT authentication to secure user data and interactions.
Key features include:
- User authentication and authorization with JWT
- Search functionality powered by the Google Books API
- Ability to save and remove books from a personal list
- Responsive design for optimal viewing on different devices
- Integration with Apollo Client for managing GraphQL queries and mutations
This project demonstrates the use of modern web development technologies and best practices, including React, GraphQL, Apollo Client, Express, Node.js, and MongoDB.
Note: The app does not need to be installed unless you wish to run the app locally on your machine. To just use the app go to https://book-search-engine-62x0.onrender.com
To install this application, follow these steps:
-
Clone the repository:
git clone https://github.com/Lauren245/book-search-engine.git cd book-search-engine -
Install dependencies: Navigate to the root directory of the project and install the necessary dependencies using
npm install -
Set up environment variables: Create a .env file in the root directory and add the following environment variables, be sure to replace the placeholder values:
MONGODB_URI=<your-mongodb-uri> JWT_SECRET=<your-jwt-secret> -
Build the project Use the
npm run buildcommand at the root level to build the application. -
Run the application Use the
npm run developcommand at the root level to run the application.
To use the Book-Search-Engine application, follow these steps:
-
Create an account:
- Click on the "Sign Up" button.
- Fill in the required information (username, email, and password).
- Click "Submit" to create your account.
-
Log in:
- Click on the "Log In" button.
- Enter your username and password.
- Click "Submit" to log in to your account.
-
Search for books:
- Use the search bar to enter the name of a book you are looking for.
- Click the "Search" button to view the search results.
-
Save books to your personal list:
- Browse the search results and find the books you want to save.
- Click the "Save" button next to the book to add it to your personal list.
-
View and manage your saved books:
- Click on the "Saved Books" link in the navigation menu to view your saved books.
- You can remove books from your list by clicking the "Remove" button next to each book.
-
Log out:
- Click on the "Log Out" button to log out of your account.
There are currently no unit tests for this application. All functionality can be tested manually.
Copyright 2025 Lauren Moore
This software uses an MIT license.
If you have additional questions, you can contact me at:
GitHub: Lauren245
Email: laurenmoorejm@gmail.com
- React: A JavaScript library for building user interfaces.
- Express: A minimal and flexible Node.js web application framework.
- Node.js: A JavaScript runtime built on Chrome's V8 JavaScript engine.
- MongoDB: A NoSQL database for storing user and book data.
- Apollo Client: A comprehensive state management library for JavaScript that enables you to manage both local and remote data with GraphQL.
- GraphQL: A query language for your API, and a server-side runtime for executing queries by using a type system you define for your data.
- JWT (JSON Web Token): A compact, URL-safe means of representing claims to be transferred between two parties.
- Google Books API: An API provided by Google to search for books and retrieve book information.
- dotenv: A zero-dependency module that loads environment variables from a
.envfile intoprocess.env. - nodemon: A tool that helps develop Node.js based applications by automatically restarting the node application when file changes in the directory are detected.
Image of the saved books for a user.

Click here to view the app as deployed on Render. Note: since it is being hosted on a free tier, it will take a while for the app to load when opening it for the first time.