Steam Price Tracker
I’m proud to present my latest project - a Steam Price Tracker built using Python and Flask. This project was my final project for the Replit 100 Days of Code challenge, and it was a great opportunity to put my skills to the test.
The Steam Price Tracker is a website that allows users to track the prices of their favorite video games on the Steam platform. By using website scraping(Beautiful Soup library), the website can retrieve up-to-date prices for the games on the user’s price tracking list and send an email notification if the price drops below the user’s specified target price.
Here are some of the key features of the Steam Price Tracker:
- Login system with hashed and salted passwords stored securely in the Replit database
- Password recovery system with email confirmation and token generation/verification
- CSRF protection to keep user data safe
- Ability to add games to a price tracking list and set a price target
- Email notifications when prices hit the target or when games go on sale
- Admin panel for viewing user information and deleting users
- Background scheduler to update prices and purge old tokens
- Supports both individual games and bundles, as well as games that aren’t currently for sale
- Logging System to keep track of various changes
When I started the Replit 100 Days of Code challenge, I was looking for a project that would challenge me and help me improve my skills. While the challenge itself was a great opportunity to learn and practice coding, I felt like I needed a more substantial project to really put my skills to the test.
That’s why I decided to build the Steam Price Tracker. I wanted to create a user-facing website/app that was both functional and visually appealing (to an extent). To achieve this goal, I went above and beyond what was required for the Replit 100 Days of Code challenge, by adding a login system, CSRF protection, an admin panel, and many other features that would really challenge myself.
In the process of building the Steam Price Tracker, I learned so much! I gained a deeper understanding of web development, improved my Python and Flask skills, and learned how to work with databases and security measures like hashed/salted passwords and token generation/verification.
While the Steam Price Tracker is a functional and effective tool for tracking video game prices on Steam, there are still several things that I’d like to improve in the future. Here are some of the items on my to-do list:
Create different “sections” on the game list: Currently, all games on the list are shown in a single section. I’d like to create separate sections for different types of games, such as bundles and games that aren’t currently for sale. This will make it easier for users to find the games they’re interested in.
Implement rate limiting on password requests/account creation: To protect against brute-force attacks and other security threats, I’d like to add rate limiting to the password recovery and account creation processes. This will prevent malicious users from repeatedly attempting to access the site and will help keep the Steam Price Tracker secure.
Convert as many routes to
render_templateas possible: Currently, some of the routes in the Steam Price Tracker are using return statements to return HTML content. I’d like to convert as many of these routes as possible to use the Flask
render_templatefunction instead. This will help make the code more organized and easier to maintain.
Add sending of a confirmation email after token expiration: To improve the usability of the Steam Price Tracker, I’d like to add a feature that sends a confirmation email to users after their password recovery or email confirmation tokens have expired. This will present new users from getting stuck if they let their token expire or otherwise had trouble.
These are just a few of the things I’d like to improve in the future. I’m always looking for ways to make the Steam Price Tracker better, and I’m open to feedback and suggestions from users. If you have any ideas or suggestions for how I can improve the Steam Price Tracker, please don’t hesitate to reach out!