Awesome
Price Track Project (inprogress)
Auto collect, visualize and alert for product items.
Live: https://pricetrack.web.app or https://tracker.duyet.net
Support
<a href="https://s.duyet.net/r/patreon"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" width="160"></a>
Installation
-
Set up Node.js and the Firebase CLI You'll need a Node.js environment. This project is written with Nodejs 8.x. After that, install the Firebase CLI via npm:
npm install -g firebase-tools
To initialize project: Run
firebase login
to log in via the browser and authenticate the firebase tool.Setup packages:
cd functions/ && npm install
-
Go to https://console.firebase.google.com and create new project.
-
Setup env variables, copy and modify
env.example.sh
toenv.local.sh
firebase functions:config:set pricetrack.sentry_dsn=https://abc@sentry.io/1362210 firebase functions:config:set pricetrack.cronjob_key=696969 firebase functions:config:set pricetrack.api_key=xxxxxxooooooKMgWKRhUdY91 firebase functions:config:set pricetrack.admin_token=xxxxxxxxxx firebase functions:config:set pricetrack.gmail_email=pricetrack.apps@gmail.com firebase functions:config:set pricetrack.gmail_password=xxxxxxxxxx firebase functions:config:set pricetrack.hosting_url=https://tracker.duyet.net firebase functions:config:set pricetrack.accesstrade_deeplink_base=https://fast.accesstrade.com.vn/deep_link/4557459014401077484 firebase functions:config:set pricetrack.admin_email=lvduit08@gmail.com firebase functions:config:set pricetrack.worker_custom_domain=
Run:
bash ./env.local.sh
-
Test in local: https://firebase.google.com/docs/functions/local-emulator
- Export local configs:
firebase functions:config:get > functions/.runtimeconfig.json
- Start firebase:
firebase serve
- Start hosting local:
cd hosting && npm run develop
- Open UI: http://localhost:8000
- Export local configs:
-
Deploy serverless functions and hosting to Firebase
firebase deploy
You can also start this project locally via:
firebase serve
All functions will be list at Firebase Dashboard:
-
Test your API
Add new URL:
https://<your-project>.cloudfunctions.net/addUrl?url=<your-url>
List:
https://<your-project>.cloudfunctions.net/listUrls
Pull data:
https://<your-project>.cloudfunctions.net/pullData?url=<your-url>
Query in raw data:
https://<your-project>.cloudfunctions.net/query?url=<your-url>&fields=datetime,price&limit=100
-
Check out the UI: https://tracker.duyet.net
Technology
- UI Website for result (Gatsby.js, React.js)
- Cronjob: Firebase Cloud Scheduler
- Deployment:
- API: Firebase Functions
- Database: Firebase Firestore
- Web: Firebase Hosting, GatsbyJS
- CICD: Github Workflows
Next Step
- Support for more ecommerce websites.
- Move worker
pullData
to another services (worker.dev
, Google App Scripts, ...) to reduce cost. - Auto trigger
BUY
,Add to cart
, ...