52 lines
1.5 KiB
Markdown
52 lines
1.5 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
npm install
|
|
cd src/client && npm install && cd ../..
|
|
npm run dev
|
|
```
|
|
|
|
Open http://localhost:5173 (frontend) — API runs on http://localhost:3000.
|
|
|
|
### Docker
|
|
|
|
```bash
|
|
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
|
|
|
|
1. Go to **Stores** > **Add Store**
|
|
2. Fill in the store name, base URL, and search URL (use `{query}` as the search term placeholder)
|
|
3. Define CSS selectors for: product container, name, price, link, and optionally image
|
|
4. Save and use the **Test** page to verify results
|
|
5. Enable the store to include it in searches
|
|
|
|
## License
|
|
|
|
MIT
|