a3ae3b248f35f5f173cdaabbaa9715b087894f42
- Add browserless/chromium container to docker-compose - Add docker-compose.dev.yml for local dev (Chromium on port 3001) - Browser scraper connects via WebSocket (CHROMIUM_WS env var) - Falls back to local launch if CHROMIUM_WS not set - Remove Chromium install from Dockerfile (smaller image) - Auto-reconnect on browser disconnect Tested: remote Chromium connects in ~500ms, HG Spot scrapes in ~2.2s total. No longer blocks the Node.js event loop. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Price Hunter
A self-hosted price comparison engine. Search across multiple online stores simultaneously, compare prices, and find the cheapest option — all from a single, clean interface.
Features
- Unified search — One search bar, all your stores, results sorted by price
- Store management — Add stores with CSS selector configs, organize by category
- Store testing — Per-store test pages to verify scraping before going live
- Categories & groups — Filter searches by category or custom store groups
- Scrape health — Monitor success rates, response times, and error logs per store
- Self-hosted — All data stays local. No ads, no tracking, no external dependencies.
Quick Start
Development
npm install
cd src/client && npm install && cd ../..
npm run dev
Open http://localhost:5173 (frontend) — API runs on http://localhost:3000.
Docker
docker compose up
Open http://localhost:3000.
Tech Stack
- Backend: Node.js, Fastify, sql.js (SQLite)
- Frontend: SvelteKit, Tailwind CSS
- Scraping: Cheerio (CSS selectors)
- Deployment: Docker
Adding a Store
- Go to Stores > Add Store
- Fill in the store name, base URL, and search URL (use
{query}as the search term placeholder) - Define CSS selectors for: product container, name, price, link, and optionally image
- Save and use the Test page to verify results
- Enable the store to include it in searches
License
MIT
Description
Languages
Svelte
50.7%
TypeScript
45.8%
CSS
1.6%
JavaScript
1%
Dockerfile
0.6%
Other
0.3%