Sitemap
Image of an opened book with a text bubble popping out
source: https://www.istockphoto.com/photos/book-review
Software Development
Learning
Growth

Gifting a Software Project

3 min readAug 27, 2023

This story is about my experience working as a consultant … for my girlfriend.

It all started when she started reading more and more books. One of her favorite hobbies is browsing and finding books to read on Libby or borrow from the library. She had been using good reads to document her thoughts and reviews on each of the books she read, but wanted something more personalized that she could share with friends and family.

This sparked the idea to create a personal website with ALL the works: registered domain, hosted website and backend systems, a database to store her reviews.

I chose 3 different technologies to accomplish this project: JavaScript, Node.js, and MongoDB. These are three popular technologies that can be used to create dynamic and interactive websites. They also have lots of support online, and as someone who mainly works in frontend development, having more resources at my disposal was a plus.

After I had a good understanding of these technologies, I started building my website. I used Express as my web framework and Mongoose as my MongoDB ORM. Express is a popular web framework for Node.js that makes it easy to create and manage web applications. Mongoose is an ORM that makes it easy to interact with MongoDB databases.

I also used a few other JavaScript libraries and frameworks, such as React and AntD. React is a popular JavaScript library for building user interfaces. AntD is a newer component library that I discovered when choosing a framework with standardized components already built. I wanted to learn more about this new one since I had already built previous projects with Material UI.

To host the backend system, I deployed the API service to render.com which allowed me to keep the service running on their free tier. One problem I encountered was that with the free tier was that service would go cold after 15 minutes of no hits. Therefore, if there was a call done to get data, it would almost a minute to spin back up and the page would take a long time to load.

To combat this, I created a cron job from a free website (fastcron.com) that allowed me to create a custom cron expression that pings the API every 14 minutes from 5AM — 11PM, keeping the service live during that timeframe.

I also used Netlify to host the user interface, which was my first time using their product. Let me say, I loved it so much that I’m going to keep using it going forward for any new UIs I create. It integrates so easily with Git and will do a deployment whenever a commit is made to the main branch. It was really easy to get it linked with a custom domain name (used Google domains) and overall, the experience with that was really great.

After a couple months of hard work, my website was finally complete! I was so excited to share the final product to my girlfriend who loves the website. She is the only super user, so she has her own login to be able to create and edit her reviews.

If you’re thinking about creating a personal book review website, I encourage you to go for it! It’s a great way to share your thoughts and reviews with others, and it’s also a lot of fun.

Here are some tips for creating your own personal book review website with JavaScript, Node.js, and MongoDB:

  • Learn JavaScript, Node.js, and MongoDB.
  • Use a web framework like Express.
  • Use an ORM like Mongoose.
  • Use other JavaScript libraries and frameworks as needed.
  • Be patient and persistent. It takes time to learn new technologies and build a website.

I hope this helps!

I hope this is helpful! Let me know if you have any other questions.

Software Development
Learning
Growth

--

--