LogoDuyệtSr. Data Engineer
HomeAboutPhotosInsightsCV

Footer

Logo

Resources

  • Rust Tiếng Việt
  • /archives
  • /series
  • /tags
  • Status

me@duyet.net

  • About
  • LinkedIn
  • Resume
  • Projects

© 2026 duyet.net | Sr. Data Engineer | 2026-02-27

Pricetrack: theo dõi giá và cashback (by Firebase)

Note: This post is over 7 years old. The information may be outdated.

Pricetrack (https://pricetrack.web.app) là một side project nhỏ của mình với chức năng theo dõi giá liên tục từ các trang TMDT (tiki.vn, shopee.vn, ...), thông báo và cashback hoàn tiền.
Vì hay mua sắm nên pricetrack giúp mình check được giá ảo lên xuống thất thường, hoặc track khi nào có khuyến mãi thì mua.
Khi giá thay đổi, giảm hoặc dưới ngưỡng mong muốn, tracker sẽ alert thông qua email hoặc push notification qua trình duyệt. Được build hoàn toàn từ Firebase của Google, trong lúc mình test các dịch vụ của nền tảng này thì pricetrack ra đời.

Update 2021: Sau một thời gian thì chi phí cho Firebase khá tốn kém, như một số bạn đã báo trước với mình như thế. Vì project này mình muốn thử các tính năng của Firebase thôi, do đó mình đã cho dừng một số API crawling. Khi có thời gian mình sẽ refactor tại với một infra mới hiệu quả và ít tốn kém hơn.

Các service pricetrack sử dụng bao gồm:

  1. Backend: Firebase Functions (Nodejs 8.x) với chức năng Serverless như AWS Lambda
  2. Database: Firestore
  3. Frontend: Firebase Hosting (+ GatsbyJS Framework) + Firebase Authentication

Demo: https://pricetrack.web.app hoặc https://tracker.duyet.net
Source code: https://github.com/duyet/pricetrack

Pricetrack hoạt động như thế nào?

  1. User đăng nhập vào frontend. Thêm các URL sản phẩm cần theo dõi
  2. Các worker (thực chất là firebase functions) sẽ chạy định kỳ 15 phút, crawl và lấy thông tin sản phẩm bao gồm giá, tên, tồn kho, ...
  3. Nếu có thay đổi sẽ trigger function alert theo thông tin trên Firestore DB.
  4. Chức năng cashback hoàn tiền được cung cập bởi Accesstrade

Mỗi URL chạy 15 phút, với số lượng nhỏ tầm 500 urls trên hệ thống này thì chi phí gọi functions và read/write Firestore cũng cần được quan tâm. Mình có dự định move các worker này sang các platform khác tiết kiệm hơn. Serverless chưa chắc là đã ít tốn kém hơn truyền thống.

Với khoản 300 urls mình tốn hơn 31.000 lần gọi functions một ngày

Nếu có thời gian mình sẽ có một bài chi tiết để build pricetracker trên Firebase step-by-step, nhược điểm và khó khăn khi sử dụng Firebase. Sau đây là screenshot quảng cáo.

May 13, 2019·7 years ago
|Project|
Side Project
|Edit|

Related Posts

Migrate (again) to Next.js 13 Pro Max

I've been using Gatsby since 2019 and while it's great that I can write my blogs in NeoVim, commit and push to Github, and have Cloudflare Pages build and publish to CDN, but I was becoming frustrated with the slow building times and the overall maintenance requirements.

May 1, 2023·3 years ago
Read more

Super Simple Shorten URL với Firebase Dynamic Links

goo.gl đã shutdown, và được thay thế bằng Dynamic Link của Firebase. Mình đã sử dụng API của Dynamic Link và Firebase viết ứng dụng Shorten URL mới siêu đơn giản như dưới đây. Bài viết này mình xin hướng dẫn một chút và chia sẽ mã nguồn, cũng như cách deploy siêu đơn giản của Google Firebase.

Apr 19, 2019·7 years ago
Read more

api.duyet.net

[https://api.duyet.net](https://api.duyet.net/) is now online. ![](https://1.bp.blogspot.com/-pkcT4MaSHys/W_BMQuealsI/AAAAAAAA1Ok/ieTSBcaC6u8KEzcVgbDmdS23UOuikzfdACLcBGAs/s1600/Screen%2BShot%2B2018-11-18%2Bat%2B12.12.11%2BAM.png) ...

Nov 18, 2018·7 years ago
Read more

Notibar.js

Notibar.js - Lightweight notification bar, no dependency.

Mar 4, 2017·9 years ago
Read more