Skip to content

Latest commit

 

History

History
182 lines (124 loc) · 5.93 KB

File metadata and controls

182 lines (124 loc) · 5.93 KB

Donate Latest Release Build Status License: GPL v3

NuciSearch

NuciSearch is a lightweight self-hosted search wrapper that routes a query to an appropriate specialised engine based on the selected mode and query pattern.

📑 Table of Contents

✨ Capabilities

  • Provides auto, text, images, torrents, videos, and maps search modes
  • Performs pattern-based routing for common query formats (for example issue keys, Wikidata IDs, and currency conversion requests)
  • Integrates with browsers through OpenSearch

🚀 Usage

Run the web application, open it in your browser, choose a search mode, and submit your query.

The application can also consume q from the query string and redirect automatically:

https://search.nuilandia.ro/?q=minecraft%20wiki%20creeper

OpenSearch descriptor:

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

🖥️ System Requirements

  • OS: Linux, MacOS, Windows
  • RAM: 512 MB minimum
  • Runtime: ASP.NET Core runtime compatible with .NET 10

📦 Installation

Obtain it from GitHub

You can deploy from the published GitHub release artefacts or execute from source using the development commands below.

⚙️ Configuration

All settings are loaded from the configuration file. The subsequent keys are recognised:

Section Key Description
Logging:LogLevel Default Default application log level
Logging:LogLevel Microsoft.AspNetCore ASP.NET Core log level
AllowedHosts * Host filtering configuration
NuciLoggerSettings logFilePath Path to the log output file
NuciLoggerSettings isFileOutputEnabled Whether file logging is enabled

🌍 Localisation

Translations are located in the project's localisation resources. The subsequent languages are currently supported:

Language Code Status
English en Complete
Romanian ro-RO Complete

🛠️ Development

Requirements

Setup

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!

Dependencies

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

🗂️ Project Structure

The solution contains the subsequent projects:

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

The key directories inside NuciSearch/ are:

Directory Purpose
Components/ Blazor components, routes, layout, and pages
Localisation/ IP-based culture provider
Logging/ Logging operation names and log keys
Resources/ Localised resource files
Services/ Search routing and geolocation logic
wwwroot/ Static assets, styles, and OpenSearch descriptor

🗺️ Roadmap

See ROADMAP.md for planned work, including keyword expansion and interface refinement priorities.

🤝 Contributing

You are welcome to submit any suggestion, feedback, or modification to this project.

When doing so, please:

  • Maintain cross-platform compatibility
  • Maintain the pull requests as focused and consistent with the existing code style
  • Maintain your branch up-to-date with master
  • Revise the documentation when behaviour changes
  • Properly test all changes, including edge cases and error conditions
  • Add unit tests for any new or changed functionality

Consult ROADMAP.md for planned work and forthcoming changes.

💝 Supporting the Project

Discovered a problem or have a suggestion? Open an issue!

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

Donate

📄 License

This project is being distributed under the GNU General Public License v3.0 or later. See LICENSE for further information.