mirror of
https://github.com/wahyd4/hey-search.git
synced 2026-08-09 05:06:23 +10:00
- DB path now uses DATA_DIR env var (defaults to backend/data/ for local dev) - Dockerfile sets DATA_DIR=/app/data with VOLUME declaration - Docker run examples show -v mount for persistence across restarts - /app/data stores SQLite DB (engines, excluded domains, cache settings) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
94 lines
2.7 KiB
Markdown
94 lines
2.7 KiB
Markdown
# Hey Search
|
|
|
|
A privacy-respecting [metasearch engine](https://en.wikipedia.org/wiki/Metasearch_engine) that aggregates results from multiple search engines.
|
|
|
|
Inspired by [SearXNG](https://github.com/searxng/searxng).
|
|
|
|
## Architecture
|
|
|
|
- **Backend**: Python / FastAPI — async metasearch orchestrator with retry logic
|
|
- **Frontend**: React + Vite + TypeScript + Tailwind CSS (shadcn theming) — mobile-first UI
|
|
- **Docker**: Multi-stage build (Node frontend build → Python runtime)
|
|
|
|
## Prerequisites
|
|
|
|
- [uv](https://docs.astral.sh/uv/) (Python package manager)
|
|
- [Node.js](https://nodejs.org/) >= 18
|
|
- Python >= 3.12
|
|
- [Redis](https://redis.io/) (optional — enables search result caching)
|
|
|
|
## Running Locally
|
|
|
|
### 1. Backend
|
|
|
|
```bash
|
|
cd backend
|
|
uv sync # install dependencies
|
|
uv run uvicorn app.main:app --reload --port 8000
|
|
```
|
|
|
|
To enable Redis caching:
|
|
|
|
```bash
|
|
REDIS_URL=redis://192.168.1.2:6399 uv run uvicorn app.main:app --reload --port 8000
|
|
```
|
|
|
|
The API will be available at `http://localhost:8000`. Interactive docs:
|
|
|
|
- Swagger UI: http://localhost:8000/docs
|
|
- Redoc: http://localhost:8000/redoc
|
|
|
|
### 2. Frontend
|
|
|
|
```bash
|
|
cd frontend
|
|
npm install # install dependencies
|
|
npm run dev # start dev server with hot reload
|
|
```
|
|
|
|
The frontend dev server runs at `http://localhost:5173` and proxies `/api` requests to the backend.
|
|
|
|
### 3. Quick start (both)
|
|
|
|
```bash
|
|
# Without Redis (caching disabled)
|
|
just dev
|
|
|
|
# With Redis
|
|
REDIS_URL=redis://192.168.1.2:6399 just dev
|
|
```
|
|
|
|
### 4. Docker (production)
|
|
|
|
```bash
|
|
docker build -t hey-search .
|
|
|
|
# Basic — data stored in anonymous volume
|
|
docker run -p 8000:8000 hey-search
|
|
|
|
# Recommended — mount data directory for persistence
|
|
docker run -p 8000:8000 -v ./hey-search-data:/app/data hey-search
|
|
|
|
# With Redis
|
|
docker run -p 8000:8000 -v ./hey-search-data:/app/data \
|
|
-e REDIS_URL=redis://your-redis:6379 hey-search
|
|
```
|
|
|
|
The `/app/data` volume stores the SQLite database (engine settings, excluded domains, cache config). Mount it to preserve your settings across container restarts.
|
|
|
|
## API Endpoints
|
|
|
|
| Method | Path | Description |
|
|
| ------ | --------------------------- | --------------------------- |
|
|
| GET | `/api/search?q=&category=` | Search web or images |
|
|
| GET | `/api/autocomplete?q=` | Autocomplete suggestions |
|
|
| GET | `/api/engines` | List all search engines |
|
|
| PUT | `/api/engines/{name}` | Enable/disable an engine |
|
|
| GET | `/api/settings` | Get app settings (cache TTL)|
|
|
| PUT | `/api/settings` | Update settings |
|
|
| DELETE | `/api/cache` | Flush search cache |
|
|
|
|
## Features
|
|
|
|
See [FEATURES.md](FEATURES.md) for the full feature list.
|