mirror of
https://github.com/R0m1k3/Priceflow.git
synced 2026-10-13 18:26:20 +02:00
This commit adds a comprehensive product search feature that allows users to search for products across multiple configured e-commerce sites. Backend changes: - Add SearXNG service to docker-compose for meta-search capability - Add SearchSite model and Alembic migration with default sites - Create searxng_service.py for search queries across sites - Create light_scraper_service.py for fast HTTP-based extraction - Create search_service.py orchestrator combining SearXNG + HTTP + Browserless - Add API endpoints for search (/api/search) with SSE streaming - Add CRUD endpoints for search sites (/api/search-sites) Frontend changes: - Add new /search page with real-time results display - Create SearchResultCard component for product display - Add Progress, Checkbox, and Badge UI components - Update Settings page with search sites management section - Add navigation link to search page - Create new modern SVG logo with price-flow gradient design - Update favicon to SVG format The search system uses a hybrid approach: 1. SearXNG finds product URLs across configured sites 2. Light HTTP scraper attempts fast extraction 3. Falls back to Browserless for JavaScript-heavy sites 4. Results stream progressively via SSE
26 lines
877 B
React
26 lines
877 B
React
import React from 'react'
|
|
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'
|
|
import { Toaster } from 'sonner'
|
|
import Layout from '@/components/layout/Layout'
|
|
import Dashboard from '@/pages/Dashboard'
|
|
import Search from '@/pages/Search'
|
|
import Settings from '@/pages/Settings'
|
|
import { useTheme } from '@/hooks/use-theme'
|
|
|
|
export default function App() {
|
|
const { theme, toggleTheme } = useTheme();
|
|
|
|
return (
|
|
<Router>
|
|
<Toaster position="bottom-right" theme={theme} />
|
|
<Layout theme={theme} toggleTheme={toggleTheme}>
|
|
<Routes>
|
|
<Route path="/" element={<Dashboard />} />
|
|
<Route path="/search" element={<Search />} />
|
|
<Route path="/settings" element={<Settings />} />
|
|
</Routes>
|
|
</Layout>
|
|
</Router>
|
|
);
|
|
}
|