Go to file
Ehsan Mohandesi 9063f9d732 Give the public data import job its own HttpClient
StartImportFromPublicDataRepo captured the injected, request-scoped HttpClient
inside the queued work item. The request completes long before the background
job runs, so the client was already disposed and the import died immediately
with ObjectDisposedException. Let the job own a client for its lifetime.
2026-09-13 22:16:28 -05:00
docs/getting-started documents 2026-08-14 18:46:17 +03:30
GanjooRazor caching fixes 2026-09-13 14:56:55 +03:30
RMuseum Give the public data import job its own HttpClient 2026-09-13 22:16:28 -05:00
TajikGanjoor tajik recitation fix 2026-09-12 13:28:23 +03:30
.gitattributes Add project files. 2020-08-14 21:06:22 +04:30
.gitignore Add project files. 2020-08-14 21:06:22 +04:30
GanjoorService.sln refactoring 2026-07-19 16:50:22 +03:30
LICENSE Create LICENSE 2020-08-14 21:35:13 +04:30
README.md semantic search dev guide 2026-09-11 08:33:31 +03:30
RUNNING_LOCALLY.md documentations 2026-08-14 19:41:04 +03:30
SEMANTIC_SEARCH_SETUP.md semantic search dev guide 2026-09-11 08:30:48 +03:30

GanjoorService

Ganjoor museum and ganjoor.net own backend (ASP.NET Core Web API) and frontend (Razor Pages) code

این کد وب سرویس گنجینهٔ گنجور و گنجور و همچنین کد سایت گنجور است.

فهرست توابع در دسترس

https://api.ganjoor.net

Running it locally

New to this codebase and want to run your own copy? See RUNNING_LOCALLY.md for a full step-by-step guide — cloning, database setup, and Visual Studio configuration.

The one thing that guide covers in more depth but is worth knowing up front: the production database is never published, since it contains private/user-linked data. What is published is a git repository of the poetry content itself (poets, categories, poems — allowlisted, no user data): github.com/ganjoor/ganjoor-data. A fresh local install can pull real content from there via Admin → مالی و سایت → درون‌ریزی دادهٔ عمومی (also reachable automatically the first time you run the site against an empty database) instead of starting from nothing.

The "find a poem about..." feature has its own setup guide, separate from the main one above — it needs a downloaded ONNX model and published embeddings data on top of the usual database setup: SEMANTIC_SEARCH_SETUP.md. Also has a real troubleshooting section covering the actual problems hit building this feature, not a generic checklist — worth reading before assuming something new is broken.