- Remove command override (limiter warning is non-blocking)
- Add DNS servers (8.8.8.8, 8.8.4.4, 1.1.1.1) to fix DNS resolution
- The real issue was 'Temporary failure in name resolution' not limiter.toml
SearXNG:
- Use proper command list format instead of shell string
- Use printf with \n for proper newlines in limiter.toml
- Use exec to properly start the entrypoint
Edit Site Modal:
- Add Dialog component import
- Add siteModalOpen and editSiteData state
- Create proper modal with form for editing sites
- Modal opens when clicking edit button
- All site fields editable in modal
SearXNG:
- Use command override to rm -rf limiter.toml before recreating it
- This ensures any directory is removed before creating the file
- Mount only settings.yml, create limiter.toml dynamically
UI:
- Remove opacity-0 from site edit/delete buttons
- Buttons are now always visible (not just on hover)
- Added title attributes for accessibility
- Create search_sites table if it doesn't exist
- Add price_selector column only if table exists but column doesn't
- Fixes 400 Bad Request when creating search sites
- Add run_migrations() function that runs at app startup
- Automatically adds price_selector column to search_sites if missing
- Prevents UndefinedColumn errors on existing databases
Simple and robust solution:
- Mount ./searxng:/etc/searxng:rw (entire directory)
- No entrypoint/command overrides needed
- Both settings.yml and limiter.toml are included
- SearXNG uses its default entrypoint
SearXNG:
- Fix tini not found error by calling entrypoint.sh directly
- Keep limiter.toml creation at container startup
UI Changes:
- Rename "Tableau de bord" to "Suivis produits" in navigation
- Move CSS selector configuration from item modal to Settings page
- Add price_selector field to search sites configuration
- Display CSS selector badge on site cards
Backend:
- Add price_selector column to SearchSite model and schemas
- Update init.sql with search_sites table and migration for existing DBs
- Fix SearXNG limiter.toml directory issue by creating file at container
startup via entrypoint command (rm -rf then recreate)
- Update README to use logo.svg instead of logo.png
- Redesign favicon.svg to match main logo style:
- Same gold-to-green gradient background
- Line gradient from white to green
- Glow effect on chart line
- Decorative dots at data points
- Green arrow indicator
- Add real_ip config to settings.yml to trust proxy headers
- Update limiter.toml to allow all IPs (0.0.0.0/0 and ::/0)
- Re-add limiter.toml volume mount (file now exists)
- Add localhost range (127.0.0.0/8) to pass_ip list
Docker was creating /etc/searxng/limiter.toml as a directory instead of
mounting the file, causing IsADirectoryError. The limiter is already
disabled in settings.yml, so the separate toml file is not needed.
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
- Changement du port de l'application de 8000 à 8555
- Mise à jour Dockerfile, docker-compose.yml et docker-entrypoint.sh
- README.md entièrement réécrit en français avec:
- Instructions d'installation complètes
- Documentation de l'architecture Docker
- Guide de configuration OpenRouter
- Section développement et personnalisation
Modifications majeures:
1. Rebranding: Pricecious → PriceFlow
- Mise à jour du titre, logo et noms de projet
2. Intégration OpenRouter
- Ajout comme provider IA avec filtres (chat, vision, code, reasoning, free)
- Récupération dynamique des modèles et coûts
- Service et router dédiés (/api/openrouter/models)
3. Internationalisation (i18n)
- Installation i18next + react-i18next
- Application entièrement traduite en français
- Fichier de traduction: fr.json
4. Configuration Docker
- docker-compose.yml avec réseau nginx_default (external)
- PostgreSQL sur port 5488:5432
- Browserless sur port 3012:3000
- init.sql pour initialisation de la base de données
- .env.example avec variables documentées
5. Favicon
- Documentation ajoutée dans index.html pour faciliter le remplacement