feat: initial JavaScript port of store-scraper-bot

Node.js 20+ ESM port mirroring Java/Go implementations.

- 13 Telegram commands matching Java identifiers
- MongoDB schema parity (common, group, apple_app, google_app collections)
- Apple/Google scrapers calling store-scraper.vercel.app with 10-min cache
- Daily 7am Vietnam-time cron with weekend-silent mode
- HTML table renderer matching Java/Go output
- Docker + Compose (prod and dev)

Untested end-to-end against live Telegram or upstream API.
This commit is contained in:
tiennm99 committed 2026-04-26 20:16:00 +07:00
1 parent ca1a409610
commit 3c97553c69
41 files changed
+1852

No files matched your search

+56
View File
@@ -0,0 +1,56 @@
version: '3.8'
services:
bot:
build: .
container_name: js-store-scraper-bot-dev
restart: unless-stopped
environment:
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
- TELEGRAM_BOT_USERNAME=${TELEGRAM_BOT_USERNAME}
- MONGODB_CONNECTION_STRING=mongodb://mongodb:27017
- MONGO_DATABASE=store_scraper_bot_dev
- ENV=DEVELOPMENT
- ADMIN_IDS=${ADMIN_IDS}
- SOURCE_COMMIT=${SOURCE_COMMIT:-dev}
depends_on:
- mongodb
networks:
- bot-network
volumes:
- ./src:/app/src
mongodb:
image: mongo:7.0
container_name: js-store-scraper-mongodb-dev
restart: unless-stopped
environment:
- MONGO_INITDB_DATABASE=store_scraper_bot_dev
volumes:
- mongodb_data_dev:/data/db
networks:
- bot-network
ports:
- "27017:27017"
mongo-express:
image: mongo-express:latest
container_name: js-store-mongo-express-dev
restart: unless-stopped
environment:
- ME_CONFIG_MONGODB_URL=mongodb://mongodb:27017
- ME_CONFIG_BASICAUTH_USERNAME=admin
- ME_CONFIG_BASICAUTH_PASSWORD=admin
depends_on:
- mongodb
networks:
- bot-network
ports:
- "8081:8081"
networks:
bot-network:
driver: bridge
volumes:
mongodb_data_dev: