mariosemes bc6090abe8 Add shareable search links with saved filters
Save a search and get a shareable URL at /share/<id> that preserves:
- Search query
- Selected stores
- Filter text
- Excluded stores
- Sort column and direction

Backend:
- New shared_searches table (migration 005)
- POST /api/share — saves search state, returns share_id
- GET /api/share/:id — loads saved search config

Frontend:
- Share button appears on results page after search completes
- Copies link to clipboard with confirmation message
- /share/[id] page loads saved config, re-runs search with same
  store selection, and restores all filters
- Shows "Shared" badge in header with "Search Again" link

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 07:20:16 +01:00

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

  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

Description
No description provided
Readme 1.3 MiB
Languages
Svelte 56.7%
TypeScript 39.6%
JavaScript 1.4%
CSS 1.2%
Dockerfile 0.5%
Other 0.6%