Ganjoor is a set of projects centered on Persian literature trying to make Iranian classic poetry available to interested users.
The current set of Ganjoor projects are:
ganjoor.net
Ganjoor is primarily known by its web site at https://ganjoor.net which technically is a WordPress based web site (for some technical reasons it is based on a pretty old version of WordPress).
For almost 11 years ganjoor.net has earned a reputation for being the primary source for people engaging in Persian classic poetry.
Although it was not the first of its kind and its content had primarily gathered from other online sources which were available prior to it (listed at this page and referenced in detail for almost all poems in their own pages), and although ganjoor.net content has been made available as a public domain and open source database -which resulted in emerging a considerable number of other derivative and similar websites (and applications)- ganjoor.net had gained domination in this domain almost within a year or two from its establishment and kept its position on top until now.

Base on Google Analytics collected data as of October 2018, on average over 1 million users visited ganjoor.net viewing over 5 million pages. For the last month, 83 percent of them came from search engines and 16 percent of them directly entered the web site.

In addition to being fortunate, the domination of ganjoor.net among competing websites might be in debt of its features -some unique at the time and many unique even by now- which would be described further in the following paragraphs.
The starting point of ganjoor.net experience for users is its home page which contains a grid containing poet names (sorted alphabetically) and pictures assigned to them.

Users can browse through this catalog of poets (each described with a short biography mostly contributed by a site user volunteered to do so or provided by volunteers who typed the works of poets for ganjoor.net) or search within their works using keywords. The search could be performed on a global scope or could be done in a limited scope such as a specific poet works or a book or a specific part of a book by him or her. Pictures assigned to poets were considered to be a helpful sign and guidance to identify which search result belongs to which poet visually.


What’s missing here:
- Some categorizations for poets and their works based on century, style, and …
- Categorization is centered around authors. There exist books with the unidentified or misidentified author (or assigned to multiple authors) in Persian literature history which may need some other type of classification here. It might be nice if the user can browse through works in a book-centric fashion or even work-type-centric type (poetry or non-poetry, poet type, or …).
- The search facilities are in need of improvements by any definition. Actually, for ganjoor.net, thanks to being the first page listed at Google, using Google for searching inside ganjoor.net is more efficient. This is a broad topic, but in addition to keyword-based search, the addition of some poem-specific search utilities might be helpful for professional users.

Whenever users reach contents of a specific part of a book, for example, a list of Ghazals of Hafez, if the part format allows (for example poems are Ghazal or Qasida or Qeta) an alphabetically based look-up utility might be helpful for him or her to go directly to the poem he or she is looking for. This utility (alphabetical search) is the way most paperback classic poetry books are arranged and helps the reader find the poem he or she is looking for. In most cases, the first verse or paragraph of the poem or book part is included in lists to aid users in order to look up the part they are looking for. There are navigation links at the bottom of parts having neighbors at the same level (e.g. different chapters of a book) in order to make navigation among parts easier.



Pages for poems include navigation links to go up in the hierarchy the poem belongs to (breadcrumbs) in addition to displaying the location of the current poem in the whole collection.

Verses are visually displayed according to their poetic roles and there exists a utility to see the order of verses beside them.



Lots of poems have prosody and rhyme tags which in addition to its informative usefulness, forms an innovative way of finding similar poems: poems that have the same rhythms and rhymes simultaneously which often indicates a poet has read and referenced another poet’s work in his or her poem.


Although a lot of prosody tags had been found and assigned manually, recently by means of a new service for finding prosody information programmatically (although with lower accuracy and correctness) I tried to complete this part of the information and now most of these works have relevant prosody tags.



Users can contribute to ganjoor.net commenting on poems. Although some comments are inappropriate (hateful, racist, or being intolerant on religious topics), some add great value and additional information on poems that are useful by other visitors. A comment abuse reporting tool has been added recently to help moderate sensitive comments.
Two other features of ganjoor.net (the first on music tags and the second one on poem narrations) are discussed later separately.
What’s missing here:
- Direct link for verses. There are situations where you might want to directly add a reference to a specific verse. A user-friendly utility to summon the whole collection hierarchy tree and select a specific book, part of a book, or a poem or a verse might become handy here.
- Although needing a complex structure, it might be ideal if we can access multiple variations or revisions of poems on a single page. There are lots of differences in different manuscripts of a single poem: some verses are missing in some manuscripts, some words are different, and … . It is more ideal if we can access scanned images of pages of manuscripts through poem pages.
- The whole idea of user membership is missing in ganjoor.net. Users need to bookmark poems privately or publicly and keep private notes about each part in their private notebook and also manage their public comments and delete or edit them if necessary. Other membership related utilities such as ratings and discussions (forum) might add values to the whole collection. Fixing spelling errors and things like that could be assigned to contributing members under the moderation of trusted ones.
- The whole process of management and maintenance (adding new poems and poets, correcting spelling errors and poems and …) is being done using a cumbersome Windows application. Data is stored in the main database as HTML formatted text including additional HTML tags and whenever needed there are utilities in the management application to strip these tags and produce plain text output. An ideal system for managing this data might have every utility ready online (using public, secure, and open web APIs) and data might be stored in a meaningful structured way without needing HTML tags inside them. Analysis and design of such an online application is a big investment in time and cost and needs a great endeavor.
- Some informative tags on poem format, topic, and … could be beneficial for users. There was an attempt to create a tagging system that gathered some data, but abandoned due to abuse or misuse and being vastly in need of moderation.

Desktop Ganjoor
(& poem narrations)
Desktop Ganjoor is a free and open-source application initially meant to distribute the ganjoor.net database and make it available as a free and open-source database. This also allows offline access to the ganjoor.net database. The application runs on Windows initially hosted at sf.net and recently moved to github.com. It is written using C# (Windows Forms) and uses an SQLite database for accessing data.

One of the major features of Desktop Ganjoor is its poem editor which allows entering new poems and new poet works into the application database. New data could be exported to files and distributed. This helped ganjoor.net to receive considerable contributions from users aiming to add new works to it by sending back works they’ve done using this editor. At the moment more than 20 poets at ganjoor.net are added due to users’ contributions using Desktop Ganjoor editor.

The Desktop Ganjoor database can be updated by downloading new poets or re-downloading existing poets’ works (to have access to updated works of them). There are lots of other user contributions which had not been published at ganjoor.net but their works can be downloaded using Desktop Ganjoor (ganjoor.net is mainly focused on classic poets and also there are some poets belonging to older centuries whose work were not considered to be of enough quality to be published at ganjoor.net).

One of the major derivative applications of Desktop Ganjoor is another desktop application called Saaghar which is available for more operating systems (Linux and Max OS in addition to Windows). It benefits from its database compatibility with Desktop Ganjoor and can download the same set of new poets and works from the Desktop Ganjoor repository of poets.
Desktop Ganjoor can also download poem narrations (audio files synchronized with text) from ganjoor.net. It is a must-have utility for people interested in narrating poems for ganjoor.net because their narrations are published only if they synchronize their narrations with poem text using Desktop Ganjoor and send their synchronization file (XML) in addition to their recorded audio files (the process, conditions, and instructions in Persian are explain at this page which includes some video tutorials).

The idea of publishing Desktop Ganjoor poem narrations as video clips in social networks resulted in another open-source utility which can mix poem text and audio narrations with background pictures and videos and additional image layers and can produce video clips from them.

Another project related to poem narrations as mentioned earlier is publishing contributed narrations at ganjoor.net which until now resulted in having more than 2400 narrations available, all synchronized with poem texts and all downloadable from a dedicated web site or using Desktop Ganjoor and directly playable at ganjoor.net. Additionally, a Telegram robot developed by Saaghar developer is able to deliver the same audio files to Telegram users.

Ganjooroid: an open-source Android app for Ganjoor
Ganjooroid is one of the Desktop Ganjoor derivative works developed for Android users. Although it is incomplete and old (latest version backs to 2013) and does not feature even what it should be considered as minimum requirements for an acceptable app (lacking global search and bookmarking as examples), it is by now the only derivative work for Android which its database is fully compatible with Desktop Ganjoor and because of that, new poets and works from Ganjoor could be downloaded and added to it without delay or need for conversion. Other derivative apps developed by other developers including Sea of Poetry, Meikade (both open-source), and Pardis-e-Parsi for Android and GANJ-AVAR, Shekerestan, and Nooshin for iOS do not have this feature.


Ganjoor e-pub library
Ganjoor e-pub library is a compiled collection of e-books (in e-pub format) available at ganjoor.net in addition to some works only available in Desktop Ganjoor which is updated regularly.
This format is produced using an in-home developed converter -which might be included someday in Desktop Ganjoor as a plugin- which converts Desktop Ganjoor SQLite databases to e-pub format.


Music Tagging Project
Starting as a personal project wondering what are singer and specifications a piece of Iranian classical singing a poem found at ganjoor.net, Ganjoor music tagging project is an ongoing crowd-sourced project which users can suggest for any poem at ganjoor.net if it is used a song (using ganjoor.net top google position while searching for these poems). Music could be selected from three different sources (beeptunes.com, an Iranian music store, golha.co.uk an archive of the Golha radio program, and Apple iTunes) which their textual data partially is imported to the ganjoor.net database (none had contributed directly to these project and there is no monetizing involved in this project). The process involves suggestion and moderation phases and aggregated data is published at dedicated pages.

OCR Verification Project
OCR is used to extend the ganjoor.net database and add new poets and their works to it. However, accuracy of Persian OCR applications is not acceptable and their results need human verification and correction. Ganjoor OCR verification project is a crowd-sourced project in which thousands of volunteers contributed to it anonymously. Up to now, works of four poets (containing almost 100k verses) have been added using the results of this project.
Ganjoor Codes
Ganjoor Codes was the first attempt to expose a web API for web site owners willing to show random poems at their web site. In addition to JavaScript embedded code block, it can produce JSON or XML output which can be useful for developing applications such as widgets for desktop software.

Ganjoor blog and social media pages
Since the beginning, Ganjoor Weblog has been the main news publishing channel for Ganjoor and in addition to the announcement of news on Ganjoor, it has been used to promote other related open source or free projects on Persian literature.
Ganjoor has been active on some social media networks such as Facebook and Telegram and has attracted a considerable amount of Iranian users despite the fact that those web sites and services are banned inside Iran by the government.
