Click this link to view the deployed project
Note: The app was deployed using the free tier of Render. As a result, it takes about 1 minute for the app to load the first time.
When the loading is complete, you will see a blank orange page. Simply hit the refresh button to view the app.
After 5 minutes of inactivity, the app needs to be reloaded again.
It is not a bug :)
The bookrack app is a virtual bookshelf. It allows you to organize and store books you have read in the past, and books you would like to read in the future.
The backend was designed using Java, Spring Boot and MongoDB.
The frontend was designed using TypeScript and React.js.
The landing page is the first page you see when the app opens. It provides a basic summary of the app as well as different navigation options for the user. There is also a slideshow which displays the first 5 books from the database.
The All Books page displays all the books in the database arranged in cards.
The Book Details page opens when a book is clicked within the All Books page.
Here, you can add a book to the Past/Future Reads and you can also delete a book from the database.
The Past Reads page displays all the books you have read in the past. Only books within the All Books page can be added to the Past Reads.
The Future Reads page displays all the books you would like to read in the future. Only books within the All Books page can be added to the Future Reads.
This page allows you to add a new book to the database. It checks if a book with the same title and author already exists in the database prior to adding the book.
If the book already exists, the book is not added and an alert is displayed to inform the user.
If the book does not already exist in the database, the book is added and an alert is displayed informing the user accordingly.
I plan to add a login functionality in order for users to be able to store books specific to their accounts.
At the moment, the Past/Future Reads are stored on the client side (browser) via Local Storage.
I plan to create separate collections within MongoDB to store the Past/Future Reads on the backend.
Spring Boot is a Java framework which is used to build backend applications faster.
MongoDB is an open source document oriented NoSQL database management system.
React is the library used in creating the frontend part of the project. It was used together with TypeScript.
Bootstrap was used in the project to provide styling for the various components.
This was used to provide an embedded MongoDB for integration testing purposes.
Cloudinary was used to provide image uploading functionality in the app. It provides cloud-based image and video management services.
SonarCloud was used in the project to perform static code analysis and ensure adequate code coverage.
Maven was used in the project to perform build automation for the Java backend. It is used to compile, test, package and manage dependencies in Java applications.
Docker was used in the project to containerize and run the server.
Render was used to deploy the app. It used the docker image (created through the Dockerfile) to deploy the app on its platform.