Track and Discuss Your Books
Visit Site
Table of Contents
Reading personal growth and fiction books have been a big part of my life. Inspired by goodreads, jReads is for multiple users to track and discuss books they are interested in. Users may add titles by browsing thru books in the current jReads database or by searching Google Book's vast selection of titles. Each book has it's own comment section associated with it.
Areas of focus:
- Creating an API to interact with any database API
- User authentication
- Managing database resources
- Managing user comments
- Unit testing
- RESTful routes
Creating an abstract layer to interact with the database API and the jReads code was the step I was most excited about. I went into it with the mindset of using MongoDB now and being able to swap it out with a SQL database in the future. Building this additional layer enabled me to create a variety of different functions customized to the needs of the application such as modifying user and book data.
Each book in a user's collection is stored in the local database while making it easy to add new titles to the collection thru Google Books. The books and data are initially searched for and found using the Google Books API. Any books a user adds to their own library are saved to the jReads database for easy reference in the future.
Many blogs covering MongoDB will teach you how to incorporate Mongo into your project, but they skim over how to optimize the performance. Shortly after finishing the interface for the Mongo API, the opened connections to Mongo went sky high with low user traffic. After a morning of research, I concluded that a connection pool was needed and went forward with the implementation. This change reduced the number of connections and increased the speed of the website.
Coming from a background with SQL, adjusting to Mongo's query selectors took some practice. The most challenging aspect was figuring out how to access an element in an array that is embedded within a file. Digging thru and reading documentations is a skill that I used frequently on this project.
Jake Simmens - Website - LinkedIn - [email protected]
Project Link: https://jreads.jakesimmens.com
- Emerson Doyah - Knowledge of testing
- Othneil Drew - Readme template
- bcrypt - Hash and salt
- Jest - testing
- Connect-Flash - User notifications
