Search: full-text across the poems, scoped to all poets, a few, or one. The static data set has no index, so this is ganjoor.net's own search endpoint, which scopes to one poet at a time — several picked poets run as several queries and merge. Entry is the poets filter box, which now sits in the bottom bar within thumb reach and offers its own words to the poem search one tap further. Snippets show the line the term is actually on. Themes: a sixth, true black, for OLED panels where an unlit pixel costs no power. Surfaces step up in near-blacks so cards stay distinguishable. Licences: every component is now credited in-app under Reading settings > About & licences, with the full text bundled in assets/licenses — the OFL requires the licence to travel with the software, so linking to it wasn't enough. licenses/README.md indexes the same thing for the repo. The credits list and the licence texts lay out left-to-right in English, since the rest of the app is right-to-left for the poetry's sake and English prose is unreadable right-aligned. Fixes a crash: the settings sheet was composed outside the provider supplying LocalOpenAbout, so opening it threw. Search decoding is covered by a unit test against a real API response; the rest verified on an API 36 emulator. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.7 KiB
Licences
Everything this app is built from, and the terms it comes under. The app itself is MIT; see
../LICENSE.
The full text of each licence below also ships inside the APK, under
assets/licenses/, and is readable in the app at Reading settings → About & licences. The
SIL Open Font License requires the licence to travel with the software, so the font licences are
bundled rather than merely linked.
Content
| What | Source | Terms |
|---|---|---|
| The poems | ganjoor.net | Classical Persian verse, long out of copyright |
| The data export | ganjoor-data | No licence file. Worth asking upstream to add one |
| Poem search, first lines | api.ganjoor.net |
A public web service. Its implementation, GanjoorService, is GPL-3.0 — this app uses none of that code, only data over HTTPS, so it is not a derivative work |
| AI summaries | Ganjoor's own feature, shown only when enabled | Labelled in the app as AI-generated |
Nothing in Ganjoor's repositories restricts AI-assisted use.
Fonts
| Font | Copyright | Licence | File |
|---|---|---|---|
| Noto Naskh Arabic | The Noto Project Authors | SIL OFL 1.1 | OFL-NotoNaskhArabic.txt |
| Noto Nastaliq Urdu | The Noto Project Authors | SIL OFL 1.1 | OFL-NotoNastaliqUrdu.txt |
| Libron | Nico Verbruggen, after Readerly and Newsreader (Production Type) | SIL OFL 1.1 | OFL-Libron.txt |
Libraries
Every dependency is Apache-2.0. The full text is in
../app/src/main/assets/licenses/apache-2.0.txt.
| Library | Copyright |
|---|---|
| Jetpack Compose, AndroidX (core, activity, lifecycle, navigation) | The Android Open Source Project |
| Material Components / Material icons | The Android Open Source Project |
| Accompanist (drawablepainter, pulled in by Coil) | The Android Open Source Project |
| Kotlin standard library, kotlinx.serialization, kotlinx.coroutines | JetBrains |
| OkHttp, Okio | Square, Inc. |
| Coil 3 | Coil Contributors |
No Google Play Services, Firebase, analytics or tracking of any kind. The only Android
permission requested is INTERNET.
Artwork
The launcher icon — an eight-point shamsa — is original work for this project, MIT like the rest of the code. Ganjoor's own app icons are unlicensed and are their mark; they are not used here.
Poet portraits
Fetched at runtime from api.ganjoor.net. They are Ganjoor's own illustrations of
long-dead poets, displayed as served and never redistributed in the APK.