mirror of
https://github.com/wahyd4/hey-search.git
synced 2026-08-08 21:05:14 +10:00
b36d3e53b5fc2be5983b21160e81021d5b255c20
P0 fixes: - Image result cards are now real <a> links (open-in-new-tab, Cmd-click, copy-link) - aria-label on all icon-only buttons (settings, clear, close, nav, toggles, delete) - Search input semantics: label, name=q, type=search, combobox ARIA pattern - Visible focus-visible ring on all interactive elements, removed bare outline-none P1 fixes: - Skip to main content link for keyboard navigation - Proper heading hierarchy (h1/h2) and landmark elements (nav, main, aside) - aria-live regions for loading/results/error announcements - Custom favicon SVG (eliminates 404 console errors) - Dialog/modal semantics with role=dialog and aria-modal P2 API improvements: - result_id, rank, engine on every result; timestamp, total_results, has_next on response - Standardized APIError model (code/message/details/retry_hint) on all error responses - X-Response-Time-Ms and rate-limit headers on all responses - curl examples and sample JSON in OpenAPI docs for every endpoint - Global exception handler returns consistent error JSON - engines parameter in URL for reproducible sessions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Hey Search
A privacy-respecting metasearch engine that aggregates results from multiple search engines.
Inspired by 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
Running Locally
1. Backend
cd backend
uv sync # install dependencies
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
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. Docker (production)
docker build -t hey-search .
docker run -p 8000:8000 hey-search
Then open http://localhost:8000.
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 |
Features
See FEATURES.md for the full feature list.
Languages
TypeScript
54.3%
Python
43.5%
CSS
1%
Dockerfile
0.4%
Just
0.4%
Other
0.4%