# Data sources and licenses Retrieved 2026-10-20. Rebuild with the scripts in `tools/content/`: ``` node tools/content/fetch-sources.mjs # download sources into tools/content/.cache/ node tools/content/build-quran.mjs # -> data/quran/index.json, data/quran/001.json … 114.json node tools/content/build-adhkar.mjs # -> data/adhkar.json node tools/content/validate.mjs # format + sanity checks node tools/content/check-config.mjs # dhikr-config.ts phrase-overlap check ``` No Quran or adhkar text in this app was typed by hand. Everything is copied from the sources below. ## Quran text — Tanzil Project - Files: `quran/index.json`, `quran/001.json` … `quran/114.json`, and the Quranic passages inside `adhkar.json` (Ayat al-Kursi, the end of al-Baqarah, al-Ikhlas / al-Falaq / an-Nas, Al Imran 190–200). - `text` = Tanzil **Uthmani** text (with pause marks, sajdah mark and tatweel), `clean` = Tanzil **Simple-Clean** text (letters only). The Quranic passages in `adhkar.json` use the Tanzil **Simple** text (with diacritics, no pause marks). - Surah metadata (names, ayah counts, Meccan/Medinan) comes from Tanzil `quran-data.xml`. - URLs: - https://tanzil.net/pub/download/index.php?quranType=uthmani&outType=xml&marks=true&sajdah=true&tatweel=true&agree=true - https://tanzil.net/pub/download/index.php?quranType=simple&outType=xml&agree=true - https://tanzil.net/pub/download/index.php?quranType=simple-clean&outType=xml&agree=true - https://tanzil.net/res/text/metadata/quran-data.xml - Basmala: Tanzil keeps the basmala of surahs 2–114 (except 9) separate from ayah 1. It is given as `bismillah` in each surah file, and `basmalaPrefixed` is `false` for every surah. - The text is copied **verbatim**: only the XML is turned into JSON. The Tanzil notice is repeated in each surah file (`source`) and below: ``` Tanzil Quran Text (Uthmani / Simple / Simple Clean, Version 1.1) Copyright (C) 2007-2026 Tanzil Project License: Creative Commons Attribution 3.0 This copy of the Quran text is carefully produced, highly verified and continuously monitored by a group of specialists at Tanzil Project. TERMS OF USE: - Permission is granted to copy and distribute verbatim copies of this text, but CHANGING IT IS NOT ALLOWED. - This Quran text can be used in any website or application, provided that its source (Tanzil Project) is clearly indicated, and a link is made to tanzil.net to enable users to keep track of changes. - This copyright notice shall be included in all verbatim copies of the text, and shall be reproduced appropriately in all files derived from or containing substantial portion of this text. Please check updates at: http://tanzil.net/updates/ ``` ## Adhkar — Hisn al-Muslim (Fortress of the Muslim), Sa'id ibn Ali ibn Wahf al-Qahtani `adhkar.json` combines three openly licensed datasets: | Used for | Dataset | License | |---|---|---| | Morning and evening: Arabic (except the 6 items listed in the asellam row), count, reference, virtue, English translation | [Seen-Arabic/Morning-And-Evening-Adhkar-DB](https://github.com/Seen-Arabic/Morning-And-Evening-Adhkar-DB) (`ar.json`, `en.json`) | MIT, © Seen-Arabic contributors | | All other categories: Arabic text, count, English translation | [YousefAsalya/Islamic-Pro-azkar-API](https://github.com/YousefAsalya/Islamic-Pro-azkar-API) (`data/ar.json`, `data/en.json`, scraped from the hisnmuslim.com API) | MIT, © 2026 Islamic Pro – Azkar API Contributors | | References (hadith sources) for those categories, the virtue text split out of those references (see `refSplit` below), a few counts, the separate 33/33/34 tasbih wording, and the Arabic of 6 morning/evening items whose Seen-Arabic vowel marks are wrong or partial (Seen-Arabic order #29 in the morning; #13, #15, #24, #26, #29 in the evening — `SEEN_ARABIC_FROM` in `build-adhkar.mjs`) | [asellam/HisnElMuslim](https://github.com/asellam/HisnElMuslim) (`hisn.json`, typed from the printed book and checked against an online copy) | MIT, © 2021 Abdellah SELLAM | The hisnmuslim.com Arabic was also compared word by word with asellam's separate transcription. They matched except for small spelling differences. ### What the build changes - Brackets, quote marks `(( ))`, `﴿ ﴾`, `{ }`, `[ ]`, footnote asterisks, decorative kashida runs and "(three times)"-type notes are removed from the Arabic. The count goes in `repeat`. - Instructions inside the text, such as "ثم ليسلم على أهله" or "يبدأ برجله اليمنى", go into `note_ar`, also copied from the source. - The build can only **delete** words. `assertDeletionOnly()` checks that every word of an output appears, in the same order, in its source item. - Some items are split. "أستغفر الله ×3" is split from "اللهم أنت السلام…". The after-prayer tasbih is split into سبحان الله ×33, الحمد لله ×33, الله أكبر ×33 and the tahlil ×1 (`tasbih: true`). - Quranic passages are replaced by the verbatim Tanzil text, and the item has `quran: {surah, from, to}`. The isti'adha or basmala before the passage is kept from the adhkar source. - When asellam's reference field starts with the hadith's virtue or its narration context, `refSplit` moves the virtue to `virtue_ar` (a short narration note may go to `note_ar`) and drops the rest of the context, so `reference` is a citation only. Both parts are cut out of the source string; this is still deletion-only. - Diacritics are kept, except a vowel mark written on a silent hamzat al-wasl (e.g. «وَاِغْفِرْ» → «وَاغْفِرْ»), which the build deletes. ### English English translations come from the MIT-licensed datasets above. The hisnmuslim.com English and the Seen-Arabic English seem to be based on the published *Fortress of the Muslim* translation. The translations of Quranic verses look like Saheeh International. Both are redistributed here under the datasets' MIT terms. The English of the after-prayer Quranic items is taken from the Seen-Arabic item for the same passage. One item has no `en`: the before-sleep al-Ikhlas/al-Falaq/an-Nas, which has only the source's description in `note_en`. ## Dhikr counter list (`src/domain/dhikr-config.ts`) The wording of the new counter entries was checked against the sources above: - Seen-Arabic (MIT): سبحان الله وبحمده, أستغفر الله وأتوب إليه, اللهم صل وسلم على نبينا محمد, لا إله إلا الله وحده لا شريك له…, يا حي يا قيوم برحمتك أستغيث - Hisn al-Muslim (hisnmuslim.com / asellam, MIT): سبحان الله وبحمده سبحان الله العظيم, لا حول ولا قوة إلا بالله, حسبنا الله ونعم الوكيل, لا إله إلا أنت سبحانك إني كنت من الظالمين, سبحان الله والحمد لله ولا إله إلا الله والله أكبر, رب اغفر لي, سبحان الله العظيم - Tanzil: الحمد لله رب العالمين (Quran 1:2) - Sunan Ibn Majah 3850 and Jami' at-Tirmidhi 3513, from [fawazahmed0/hadith-api](https://github.com/fawazahmed0/hadith-api) (Unlicense): اللهم إنك عفو تحب العفو فاعف عني. The wording is taken from Ibn Majah 3850. The Tirmidhi edition reads «عفو كريم», and that wording is accepted as a phrase too. ## Situational duas (`duas.json`) Hisn al-Muslim (Sa'id ibn Ali ibn Wahf al-Qahtani). - Arabic + English: hisnmuslim.com text via [YousefAsalya/Islamic-Pro-azkar-API](https://github.com/YousefAsalya/Islamic-Pro-azkar-API) (MIT, © 2026 Islamic Pro – Azkar API Contributors). - References, counts, and the Arabic of items marked `asellam`: [asellam/HisnElMuslim](https://github.com/asellam/HisnElMuslim) (MIT, © 2021 Abdellah SELLAM). - Built with `node tools/content/fetch-duas.mjs && node tools/content/build-duas.mjs` (deletion-only from the sources). Situation titles and search keywords are the app's own text. ## Prayer times, cities and Qibla - Calculations: [adhan-js](https://github.com/batoulapps/adhan-js) 4.4.6 (MIT), vendored in `js/lib/adhan.js`. - City coordinates and time zones: [GeoNames](https://www.geonames.org/) (CC BY 4.0). - Arabic city names and aliases: [Wikidata](https://www.wikidata.org/) (CC0). - Qibla compass magnetic declination: NOAA NCEI / British Geological Survey World Magnetic Model WMM2025 (`WMM.COF`, coefficients copied verbatim into `js/prayer/wmm.js`), https://www.ncei.noaa.gov/products/world-magnetic-model. Public domain (a US government product, no copyright restrictions). - Mosque map: [Leaflet](https://leafletjs.com/) 1.9.4 (BSD-2-Clause, © 2010–2023 Volodymyr Agafonkin, © 2010–2011 CloudMade), vendored in `js/lib/leaflet.js` and `css/leaflet.css` (npm `leaflet@1.9.4` dist). Map tiles and mosque search: © [OpenStreetMap](https://www.openstreetmap.org/copyright) contributors (data under the ODbL), loaded live from the OpenStreetMap tile and Nominatim servers only while the map is open. ## Ramadan data (`ramadan.json`) - Juz, page and surah tables: Tanzil `quran-data.xml` (CC BY 3.0). - Iftar dua: Hisn al-Muslim (sources above), wording checked against Sunan Abi Dawud 2357 via [fawazahmed0/hadith-api](https://github.com/fawazahmed0/hadith-api) (Unlicense). - Laylat al-Qadr dua: Sunan Ibn Majah 3850 (Arabic) and Jami' at-Tirmidhi 3513 (English) via hadith-api. - Built with `node tools/content/build-ramadan.mjs `. ## Fonts (`fonts/*.woff2`) Self-hosted, so loading the app sends no request to Google. The files are the woff2 files the Google Fonts CSS served to Chrome on 2026-10-20 (Arabic and Latin subsets, plus the Latin Extended subset of Inter and IBM Plex Sans Arabic for transliteration such as ḥ ṣ ā ʿ; unmodified). `@font-face` rules are in `styles.css`. All four families are licensed under the [SIL Open Font License 1.1](https://openfontlicense.org): | Family | Files | Copyright (from the font files) | |---|---|---| | Amiri 400, 700 (v1.002) | `amiri-*.woff2` | Copyright 2010-2022 The Amiri Project Authors (https://github.com/aliftype/amiri) | | Amiri Quran (v1.003) | `amiri-quran-*.woff2` | Copyright 2010-2022 The Amiri Project Authors (https://github.com/aliftype/amiri) | | IBM Plex Sans Arabic 400, 500, 600, 700 (v1.101) | `ibm-plex-sans-arabic-*.woff2` (arabic, latin, latin-ext) | Copyright 2019 IBM Corp. | | Inter 400–700, variable (v4.001) | `inter-latin.woff2`, `inter-latin-ext.woff2` | Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter) | The full licence text ships next to the fonts, one per family as published in the google/fonts repository: `fonts/OFL-amiri.txt`, `fonts/OFL-amiriquran.txt`, `fonts/OFL-ibmplexsansarabic.txt`, `fonts/OFL-inter.txt`. ## "Understand" data: word by word, tafsir, understand your salah Retrieved 2026-10-22. Rebuild with: ``` node tools/content/fetch-sources.mjs # Tanzil + Hisn al-Muslim datasets (above) node tools/content/fetch-sources.mjs --understand # Quran.com wbw, QuranEnc tafsir/translation, 2 hadith files node tools/content/build-wbw.mjs # -> data/wbw/en/001.json … 114.json node tools/content/build-tafsir.mjs # -> data/tafsir/index.json, data/tafsir//001.json … 114.json node tools/content/build-understand.mjs # -> data/understand-salah.json node tools/content/validate.mjs ``` No gloss, translation or tafsir here was typed by hand or generated. Everything is copied from the sources below. ### Word by word (`wbw/en/*.json`) - Source: Quran.com API v4 (`https://api.quran.com/api/v4/verses/by_chapter/?words=true&language=en`), field `words[].translation.text`. Quran.com's English word-by-word translation is based on the word-by-word translation of the [Quranic Arabic Corpus](https://corpus.quran.com) (Kais Dukes et al., University of Leeds). - License: the Quranic Arabic Corpus is published under the GNU General Public License (https://corpus.quran.com/license.jsp) and "available freely for non-commercial use" with attribution (https://corpus.quran.com/faq.jsp). This app is free and non-commercial. **If the app is ever used commercially, this license must be re-checked.** - Glosses are copied verbatim, including their `( )` / `[ ]` notation. Each gloss is matched to a word of the Tanzil text by position. When Quran.com groups words differently from Tanzil (2:181, 8:6, 13:37 «بَعْدَ مَا» and 37:130 «إِلْ يَاسِينَ» are one word there and two in Tanzil), that ayah has `words: null`, because a gloss cannot be split without changing it. ### Tafsir (`tafsir/index.json`, `tafsir//*.json`) | id | Work | Source | Version | |---|---|---|---| | `mukhtasar-en` | English translation of *Al-Mukhtasar fi Tafsir al-Quran al-Karim*, Tafsir Center for Quranic Studies | QuranEnc.com API, key `english_mokhtasar` | none published (see note) | | `muyassar-ar` | *At-Tafsir al-Muyassar*, King Fahd Glorious Quran Printing Complex | QuranEnc.com API, key `arabic_moyassar` (https://quranenc.com/en/browse/arabic_moyassar) | V1.0.0 (15/02/2017) | QuranEnc.com terms (https://quranenc.com/en/home/api, "Terms and Policies"): ``` Contents of the translations can be downloaded and re-published, with the following terms and conditions: 1. No modification, addition, or deletion of the content. 2. Clearly referring to the publisher and the source (QuranEnc.com). 3. Mentioning the version number when re-publishing the translation. 4. Keeping the transcript information inside the document. 5. Notifying the source (QuranEnc.com) of any note on the translation. 6. Updating the translation according to the latest version issued from the source (QuranEnc.com). 7. Inappropriate advertisements must not be included when displaying translations of the meanings of the Noble Quran. ``` What the build changes (formatting only): the English Mukhtasar starts every entry with its ayah number ("4. ", "12-13. "). That number is removed because the ayah is already given by `n`. Line breaks are normalized. When the source repeats the same explanation for consecutive ayahs (one explanation for a group), the later ayahs get `ref: ` instead of a copy. Note: `english_mokhtasar` is served by the QuranEnc API but is not listed on quranenc.com (`/en/browse/english_mokhtasar` returns 404), so it has no published version number. In 16 places the source entry for an ayah is the explanation of a different ayah. The entry's number prefix names the other ayah, and the ayah's own explanation is missing. These ayahs are published as `{ "n": X, "text": null }` (explanation unavailable), and no `ref` points to them: 2:3, 3:4, 4:66–67, 4:98, 11:54, 14:49, 23:55, 36:4, 36:26, 37:22, 37:165, 37:171–172, 42:49, 56:90. The list is explicit (`unavailable` in `build-tafsir.mjs`) and was checked by hand against the prefixes. Three kinds of entry are deliberately not on the list: - refrains whose wording is identical in the Quran (e.g. 55:13 carries the prefix "77.", and 26:108 carries "163."), because the explanation fits; - 84:24–25, where the prefix is a typo and the text is right; - 42:1–2, where one note covers both disconnected-letter ayahs. ### Understand your salah (`understand-salah.json`) - Quranic items: `arabic` = Tanzil Uthmani text (see "Quran text" above). `words` = the word-by-word data above. `en` = Saheeh International, from QuranEnc.com `english_saheeh` ("English Translation - Noor International Center", v1.1.2, QuranEnc terms above). The footnote markers `[2]` are removed, and the footnotes are not included. - Opening dua (subhanaka-llahumma), isti'adha, ruku', rising, sujud, between the two sujud, tashahhud and salawat: Hisn al-Muslim. Arabic and references come from [asellam/HisnElMuslim](https://github.com/asellam/HisnElMuslim) (MIT). English comes from the hisnmuslim.com English via [YousefAsalya/Islamic-Pro-azkar-API](https://github.com/YousefAsalya/Islamic-Pro-azkar-API) (MIT). The build only deletes: brackets, "(three times)" notes, and the explanatory notes after the translation. The isti'adha wording is the Hisn al-Muslim item for anger (al-Bukhari, Muslim). - Opening takbir «اللَّهُ أَكْبَرُ» / "Allah is Most Great": Sunan Ibn Majah 803. Taslim «السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللَّهِ» / "peace be upon you and the mercy of Allah": Sunan an-Nasa'i 1322. Both come from [fawazahmed0/hadith-api](https://github.com/fawazahmed0/hadith-api) (Unlicense) and are cut verbatim out of the hadith text. - Word glosses of non-Quranic words: the gloss the word-by-word data gives the same word form in the Quran, matched on the Tanzil Simple spelling (vowelled form first, then letters with hamza forms kept). Each matched word has `from` (the ayah the gloss comes from). Words with no match have `"en": null`. Three matches were reviewed and set to `null` because the Quranic gloss is misleading in the tashahhud (`GLOSS_EXCLUDE` in `build-understand.mjs`): - وَالطَّيِّبَاتُ: "And good women", from 24:26 - السَّلَامُ: "the Giver of Peace", from 59:23 - عِبَادِ: "(to) My slaves", from 39:17