Amazon Price Tracker
Amazon Price Tracker is a small full-stack application built for personal use. It continuously monitors prices of your favorite Amazon products and notifies you by email as soon as an item reaches your target price.
You can view, add, and remove items from your wishlist from any device in your household. The tool also supports shared use, making it suitable for multiple users within the same home.
- Link: N/A
- Team: Just me
- Development: 1 week
- Platform: Web
- Technology: Vue.js, Bootstrap, Express.js, Puppeteer, Nodemailer
Making Of
I’ve built a mono-repo containing frontend and backend directories.
The backend runs an Express.js server which responds with the latest product data in JSON format. A cron job crawls every product in the wishlist twice per hour on a scheduled basis. Puppeteer launches a Chrome browser in Headless mode, crawls the website, and returns the DOM. The price data is being extracted and used to update the product data. As soon as an item reaches the target price, an email is send by Nodemailer. Additionally, the server has routes to add and delete products from the wishlist.
The frontend is a Vue.js application using the Bootstrap library listing all products with their latest pricing information. It offers two forms to manage the wishlist.
In the first form users can enter a product link, their desired price, as well as their email address. Since the tool is intended to be used by multiple people in a household, you provide your email address when adding a product so that you can receive the appropriate notifications.
The second form can be used to delete products from the wishlist.
Once a product drops below the user’s target price, a notification email is sent.
For personal use, I hosted both the frontend and backend on a Raspberry Pi running a Linux distribution. As a result, the server could run continuously without requiring my PC to remain powered on. Additionally, the web application can be accessed from any device on the local network by entering the Raspberry Pi’s IP address in a browser.