Skip to content

Installation

Requirement Notes
.NET SDK 10.0 Every project targets net10.0. No project declares its own target framework; it comes from Directory.Build.props at the repository root.
SQL Server 2019 or later LocalDB is sufficient for development. The schema is deployed by script, not by Entity Framework migrations - see Database deployment.
PowerShell 7 Only needed for the helper scripts under Database/operational/.

Each of these enables exactly one capability. The application starts and runs without any of them; the corresponding feature degrades in a defined way rather than failing unpredictably.

Enables preview generation for Office formats - Word, Excel, PowerPoint and their open-format equivalents. Docsentry invokes soffice to convert the document to PDF, then rasterises the first page.

Configured by PreviewOptions:SofficePath. Leave it empty to let the application discover the executable on the current platform, or set an absolute path when it is installed somewhere unusual. PreviewOptions:SofficeTimeout bounds a single conversion.

Without it: Office documents upload, download, and version normally, but show no preview or thumbnail. Images and PDFs are unaffected, because they do not go through the converter.

Enables optical character recognition, so scanned documents and image-only PDFs become searchable by their contents rather than only by filename and metadata.

Configured by the OCR options: TesseractPath and TessdataPrefix locate the engine and its language data, Languages selects the trained models (eng+ara by default), TimeoutSeconds bounds one document, and MaxImagePixels caps the raster size per page.

Without it: documents are stored and remain findable by filename, metadata, tags, and categories, but their text is never extracted. OCR status reports as failed when the engine cannot be reached - as distinct from pending, which means the job has not run yet.

Provides antivirus scanning of uploaded content over TCP, by default on port 3310.

ClamAV is one backend among several. See Antivirus for the alternatives, including a hash-lookup service and a test scanner that recognises only the EICAR test string.

Without it: configure a different scanner kind. Do not leave a scanner configured and unreachable - scanning is fail-closed by design, so an unreachable scanner blocks access to content that has not been cleared rather than letting it through.

Enables indexed content search. This is a SQL Server feature installed at the instance level, not something the application can turn on.

Without it: search still returns correct results. Docsentry detects that no full-text index is available and falls back to a LIKE scan. That predicate has a leading wildcard, so it cannot use an index and scans the candidate rows instead. On a small repository the difference is invisible; on a large one it is the difference between a fast query and a slow one.

To check whether the feature is present on your instance:

SELECT FULLTEXTSERVICEPROPERTY('IsFullTextInstalled');

A result of 0 means the feature is not installed and the fallback is the only available path. See Search for how the choice is made at runtime.

Terminal window
dotnet build Docsentry.slnx --configuration Release
dotnet test Docsentry.slnx --configuration Release

A clean build reports zero warnings and zero errors. If the database integration suite matters to you, read the warning about DOCSENTRY_TEST_CONNECTION_STRING in Quickstart before trusting a green run.