{"id":21846947,"url":"https://github.com/duyet/pricetrack","last_synced_at":"2025-07-07T08:38:18.571Z","repository":{"id":37027385,"uuid":"162599694","full_name":"duyet/pricetrack","owner":"duyet","description":"Price tracker monitors of products and alerts you when prices drop. Supported tiki.vn, shopee, lotte.vn, ... Built with firebase https://pricetrack.web.app","archived":false,"fork":false,"pushed_at":"2024-05-22T22:29:16.000Z","size":22993,"stargazers_count":120,"open_issues_count":83,"forks_count":46,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-22T23:32:42.925Z","etag":null,"topics":["api","crawler","cronjob-scheduler","firebase","firebase-auth","firebase-functions","firebase-hosting","firestore","redash","shopee","shopee-api","tiki","tracking"],"latest_commit_sha":null,"homepage":"https://tracker.duyet.net","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/duyet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"duyet","ko_fi":"duyet"}},"created_at":"2018-12-20T15:45:41.000Z","updated_at":"2024-05-28T10:46:27.814Z","dependencies_parsed_at":"2024-01-03T02:24:47.825Z","dependency_job_id":"d8e27e24-ac47-42a3-b344-5258349e7e11","html_url":"https://github.com/duyet/pricetrack","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duyet%2Fpricetrack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duyet%2Fpricetrack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duyet%2Fpricetrack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duyet%2Fpricetrack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/duyet","download_url":"https://codeload.github.com/duyet/pricetrack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230438185,"owners_count":18225870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","crawler","cronjob-scheduler","firebase","firebase-auth","firebase-functions","firebase-hosting","firestore","redash","shopee","shopee-api","tiki","tracking"],"created_at":"2024-11-27T23:16:14.834Z","updated_at":"2024-12-19T13:07:37.787Z","avatar_url":"https://github.com/duyet.png","language":"JavaScript","funding_links":["https://github.com/sponsors/duyet","https://ko-fi.com/duyet"],"categories":[],"sub_categories":[],"readme":"# Price Track Project (inprogress)\n\n![GitHub top language](https://img.shields.io/github/languages/top/duyetdev/pricetrack?style=flat-square)\n![Website](https://img.shields.io/website/https/tracker.duyet.net?style=flat-square)\n![Uptime Robot ratio (7 days)](https://img.shields.io/uptimerobot/ratio/7/m783954368-3c5526c1e57d14f0eb83e7a4?label=uptime%20%28pricetrack.web.app%29)\n\n![Deploy Functions](https://github.com/duyetdev/pricetrack/workflows/Deploy%20Functions/badge.svg)\n![Deploy Hostings](https://github.com/duyetdev/pricetrack/workflows/Deploy%20Hostings/badge.svg)\n\nAuto collect, visualize and alert for product items.\n\n**Live**: [https://pricetrack.web.app](https://pricetrack.web.app) or [https://tracker.duyet.net](https://tracker.duyet.net)\n\n**Support**\n\n\u003ca href=\"https://s.duyet.net/r/patreon\"\u003e\u003cimg src=\"https://c5.patreon.com/external/logo/become_a_patron_button@2x.png\" width=\"160\"\u003e\u003c/a\u003e\n\n![Home page](.screenshot/screenshot-home.png)\n![Home page](.screenshot/screenshot-detail.png)\n![Home page](.screenshot/screenshot-cashback.png)\n![Home page](.screenshot/screenshot-about.png)\n![Raw API](.screenshot/intro-raw-api.png)\n\n\n# Installation\n\n1. **Set up Node.js and the Firebase CLI**\n\tYou'll need a Node.js environment. This project is written with Nodejs 8.x.\n\tAfter that, install the Firebase CLI via npm:\n\n\t```\n\tnpm install -g firebase-tools\n\t```\n\n\tTo initialize project: Run `firebase login` to log in via the browser and authenticate the firebase tool.\n\n\tSetup packages: `cd functions/ \u0026\u0026 npm install`\n\n2. Go to https://console.firebase.google.com and create new project.\n\n3. Setup env variables, copy and modify `env.example.sh` to `env.local.sh`\n\t```\n\tfirebase functions:config:set pricetrack.sentry_dsn=https://abc@sentry.io/1362210\n\tfirebase functions:config:set pricetrack.cronjob_key=696969\n\tfirebase functions:config:set pricetrack.api_key=xxxxxxooooooKMgWKRhUdY91\n\tfirebase functions:config:set pricetrack.admin_token=xxxxxxxxxx\n\tfirebase functions:config:set pricetrack.gmail_email=pricetrack.apps@gmail.com\n\tfirebase functions:config:set pricetrack.gmail_password=xxxxxxxxxx\n\tfirebase functions:config:set pricetrack.hosting_url=https://tracker.duyet.net\n\tfirebase functions:config:set pricetrack.accesstrade_deeplink_base=https://fast.accesstrade.com.vn/deep_link/4557459014401077484\n\tfirebase functions:config:set pricetrack.admin_email=lvduit08@gmail.com\n\tfirebase functions:config:set pricetrack.worker_custom_domain=\n\t```\n\n\tRun: `bash ./env.local.sh`\n\n3. Test in local: https://firebase.google.com/docs/functions/local-emulator\n\t- Export local configs: `firebase functions:config:get \u003e functions/.runtimeconfig.json`\n\t- Start firebase: `firebase serve`\n\t- Start hosting local: `cd hosting \u0026\u0026 npm run develop`\n\t- Open UI: http://localhost:8000\n\n4. **Deploy serverless functions and hosting to Firebase**\n\t```\n\tfirebase deploy\n\t```\n\n\tYou can also start this project locally via: `firebase serve`\n\n\tAll functions will be list at Firebase Dashboard:\n\n\t![Firebase Dashboard](.screenshot/setup-dashboard-functions.png)\n\n5. **Test your API**\n\t\n\tAdd new URL: `https://\u003cyour-project\u003e.cloudfunctions.net/addUrl?url=\u003cyour-url\u003e`\n\n\t![Test API](.screenshot/setup-test-1.png)\n\n\tList: `https://\u003cyour-project\u003e.cloudfunctions.net/listUrls`\n\n\t![Test API](.screenshot/setup-test-2.png)\n\n\tPull data: `https://\u003cyour-project\u003e.cloudfunctions.net/pullData?url=\u003cyour-url\u003e`\n\n\t![Test API](.screenshot/setup-test-3.png)\n\n\tQuery in raw data: `https://\u003cyour-project\u003e.cloudfunctions.net/query?url=\u003cyour-url\u003e\u0026fields=datetime,price\u0026limit=100`\n\n\t![Test API](.screenshot/setup-test-4.png)\n\n\n6. Check out the UI: https://tracker.duyet.net\n\n\t![Home page](.screenshot/screenshot-home.png)\n\n# Technology\n\n- UI Website for result (Gatsby.js, React.js)\n- Cronjob: Firebase Cloud Scheduler\n- Deployment:\n\t+ API: Firebase Functions\n\t+ Database: Firebase Firestore\n\t+ Web: Firebase Hosting, GatsbyJS\n- CICD: Github Workflows\n\n# Next Step\n\n- Support for more ecommerce websites.\n- Move worker `pullData` to another services (`worker.dev`, Google App Scripts, ...) to reduce cost.\n- Auto trigger `BUY`, `Add to cart`, ...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduyet%2Fpricetrack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduyet%2Fpricetrack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduyet%2Fpricetrack/lists"}