Skip to content

hmlendea/nucisearch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

232 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Donate Latest Release Build Status License: GPL v3

NuciSearch

A lightweight and minimalist search engine wrapper built around existing search services.

NuciSearch provides a simple search interface that redirects queries to specialised engines such as DuckDuckGo, YouTube, or Google Maps, depending on the selected search mode.

The goal is to provide a clean, fast, and dependency-free search page that can be self-hosted and easily integrated with browsers via OpenSearch.

Features

  • Minimal and lightweight design
  • No external dependencies
  • Self-hostable
  • OpenSearch support (can be installed as a browser search engine)
  • Multiple search modes:
    • Auto → keyword-based routing or fallback text search
    • Text → randomised web search (Brave / DuckDuckGo)
    • Images → DuckDuckGo Image Search
    • Torrents → Yandex search with "Torrent" suffix
    • Videos → Yewtu.be (YouTube privacy frontend)
    • Locations → Google Maps
  • Query parameter support (?q=)
  • Works as a browser search provider

Auto Integrations

When using Auto mode, queries are routed to specialised providers based on pattern matching or keywords.

Pattern-based (no keyword needed)

  • JIRA (Worldpay) — queries matching AAP-###, AV-###, AND-###, CP-###
  • Rally — queries matching DE, F, or US followed by 6–8 digits
  • Wikidata — queries matching Q[digits] (e.g. Q42) → Wikidata item page
  • Currency exchange — queries matching [amount] [currency] in/to [currency] (e.g. 100 EUR in USD) → DuckDuckGo
    • Normalises înin, euro/eurosEUR, lei/leuRON, dollar/dollars/dolar/dolariUSD, lira/liră/lireGBP
    • Uppercases all 3-letter currency codes
  • IP address lookup — queries my ip, current ip, my ip address, or current ip address → DuckDuckGo
  • Wiki blacklists — for media-related searches (video games, TV series, etc.), non-primary wikis (fandom.com, wiki.fextralife.com, arcenserv.info, huijiwiki.com, neoseeker.com, strategywiki.org) are excluded in favour of the official or community-preferred wiki for that franchise, where applicable

Keyword-triggered

  • AliExpress — keyword: aliexpress
  • Altex — keyword: altex
  • App Store (Apple) — keyword: appstore, app store, or apple store
  • Arch Wiki — keyword: arch wiki
  • Auchan — keyword: auchan
  • Audible — keyword: audible
  • Boobpedia — keyword: boobpedia
  • Cărturești — keyword: carturesti
  • Decathlon — keyword: decathlon
  • Dedeman — keyword: dedeman
  • Dex Online — keyword: dex
  • Digi24 — keyword: digi24
  • eBay — keyword: ebay
  • eMAG — keyword: emag
  • evoMAG — keyword: evomag
  • Facebook — keyword: facebook
  • F-Droid — keyword: fdroid or f-droid
  • Firefox Extensions — keyword: firefox extension or firefox extensions
  • Flanco — keyword: flanco
  • Flathub — keyword: flathub
  • Flip.ro — keyword: flip.ro
  • G2A — keyword: g2a
  • GitHub — keyword: github
  • GOG — keyword: gog
  • Hornbach — keyword: hornbach
  • IKEA — keyword: ikea
  • IMDb (via LibreMDb) — keyword: imdb
  • Instagram — keyword: instagram
  • JYSK — keyword: jysk
  • Leroy Merlin — keyword: leroy merlin
  • Lidl — keyword: lidl
  • LinkedIn — keyword: linkedin
  • Minecraft Heads — keyword: mc head, mc heads, minecraft head, or minecraft heads
  • Minecraft Wiki — keyword: mc wiki or minecraft wiki
  • ModDB — keyword: moddb
  • NameMC — keyword: namemc
  • Netflix — keyword: netflix
  • Nexus Mods — keyword: nexusmods or nexus mods
  • Odysee — keyword: odysee
  • OLX — keyword: olx
  • PC Garage — keyword: pcgarage
  • Pinterest — keyword: pinterest
  • PlanetMinecraft — keyword: planet minecraft
  • PlanetMinecraft Schematics — keyword: mc schematic(s) or minecraft schematic(s)
  • Play Store — keyword: play store or playstore
  • Plex — keyword: plex
  • ProtonDB — keyword: protondb
  • Reddit (via Redlib) — keyword: reddit
  • Rtings — keyword: rtings
  • Sinsay — keyword: sinsay
  • Spigot — keyword: spigot
  • Spy-Shop — keyword: spyshop, spyshop.ro, spy-shop, or spy-shop.ro
  • SteamDB — keyword: steamdb
  • TripAdvisor — keyword: tripadvisor
  • TVDB — keyword: tvdb or thetvdb
  • UESP (Unofficial Elder Scrolls Pages) — keyword: uesp, elder scrolls wiki, eso wiki, morrowind wiki, oblivion wiki, skyrim wiki, tes wiki, or the elder scrolls wiki
  • Vinted — keyword: vinted
  • Wikidata — keyword: wikidata
  • Wikipedia (randomised: Wikipedia / Wikiless) — keyword: wikipedia
  • YouTube (via yewtu.be) — keyword: youtube

Browser Integration

NuciSearch supports OpenSearch, allowing it to be installed as a search engine in browsers.

OpenSearch description: https://search.nuilandia.ro/opensearch.xml

Configuration

All settings are loaded from appsettings.json. The following keys are recognised:

Section Key Description
NuciLoggerSettings logFilePath Path to the log output file
NuciLoggerSettings isFileOutputEnabled Whether to write logs to a file

Development

Requirements

All NuGet dependencies are restored automatically by dotnet restore.

Build

dotnet build NuciSearch

Run

dotnet run --project NuciSearch

Test

dotnet test NuciSearch.slnx

Release

The repository includes release.sh, which delegates to the upstream deployment script used by the project maintainer.

bash ./release.sh 1.0.0

This script downloads and executes an external release helper from https://raw.githubusercontent.com/hmlendea/deployment-scripts/master/release/dotnet/10.0.sh.

Note: Piping into bash is an intensely controversial topic. Please review any external scripts before running them in your environment!

Project Structure

The solution contains the following projects:

  • NuciSearch: The main ASP.NET Core Blazor Server application
  • NuciSearch.UnitTests: Unit tests for the application

Key directories inside NuciSearch/:

Directory Purpose
Components/ Blazor components (pages and layout)
Localisation/ IP-based culture detection
Logging/ Logging keys and operation constants
Resources/ Localisation resource files
Services/ Business logic and search URL generation
wwwroot/ Static web assets (CSS, favicon, OpenSearch XML)

Dependencies

Package Purpose
NuciLog Structured application logging
NuciLog.Core Core logging abstractions
NuciText.Obfuscation Query deobfuscation

Contributing

Contributions are welcome. Please:

  • Keep changes cross-platform
  • Keep the existing public API intact unless a breaking change is intentional
  • Keep pull requests focused and consistent with the existing code style
  • Update documentation when behaviour changes

Support

If you find this project useful, consider funding it or giving a ⭐️ on GitHub!

License

Licensed under the GNU General Public License v3.0 or later. See LICENSE for details.

About

A lightweight and minimalist search engine wrapper built around existing search services.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Contributors