# z6il/quran_android architecture

> Architecture diagram of the GitHub repository z6il/quran_android, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/z6il/quran_android
- Repository: https://github.com/z6il/quran_android

## Overview

This is an Android Madani mushaf app whose main journey is opening the Quran, navigating and searching verses, reading translations or tafsir, and optionally listening to recitation. The fork adds offline hadith, prayer and qibla, adhkar, research, a book library, al-Kahf tracking, and khatmah planning. The graph preserves these documented branches; several are represented at their feature directory because their implementation was not sampled. Internal links are limited to relationships visible in excerpts or the source index.

Main entry points: [`app/src/main/java/com/quran/labs/androidquran/service/QuranDownloadService.kt`](https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/service/QuranDownloadService.kt) (Download service), [`app/src/main/java/com/quran/labs/androidquran/ui/PagerActivity.kt`](https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/ui/PagerActivity.kt) (Quran reader), [`app/src/main/java/com/quran/labs/androidquran/ui/TranslationManagerActivity.kt`](https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/ui/TranslationManagerActivity.kt) (Translations), [`feature/downloadmanager/src/main/kotlin/com/quran/mobile/feature/downloadmanager/SheikhAudioDownloadsActivity.kt`](https://github.com/z6il/quran_android/blob/main/feature/downloadmanager/src/main/kotlin/com/quran/mobile/feature/downloadmanager/SheikhAudioDownloadsActivity.kt) (Reciter downloads)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_reading["Quran reading"]
  node_reader["Quran reader<br/>[PagerActivity.kt]"]
  node_quran_data["Quran data<br/>[QuranInfo.kt]"]
  node_quran_files["Quran files"]
  node_search["Verse search<br/>[ArabicSearcher.kt]"]
  node_translation_manager["Translations"]
end

subgraph group_media["Audio and downloads"]
  node_audio_service["Audio playback<br/>[AudioService.kt]"]
  node_audio_downloads["Reciter downloads"]
  node_download_service["Download service"]
  node_download_notifier["Download status"]
end

subgraph group_worship["Worship tools"]
  node_prayer["Prayer and qibla"]
  node_adhkar["Adhkar"]
  node_khatmah["Khatmah planner"]
  node_kahf["Kahf tracker"]
end

subgraph group_study["Study and research"]
  node_hadith["Hadith reader"]
  node_library["Book library"]
  node_research["Research notebook"]
end

subgraph group_platform["App platform"]
  node_app["Application setup"]
  node_settings[("App preferences<br/>[QuranSettings.java]")]
end

node_user(("Reader"))
node_mp3quran["MP3 Quran"]
node_openiti["OpenITI corpus"]

node_user -->|"reads Quran"| node_reader
node_reader -.->|"uses verse mapping"| node_quran_data
node_user -->|"searches verses"| node_search
node_user -->|"manages translations"| node_translation_manager
node_translation_manager -->|"starts downloads"| node_download_service
node_download_service -->|"reports progress"| node_download_notifier
node_user -->|"plays recitation"| node_audio_service
node_user -->|"gets reciters"| node_audio_downloads
node_audio_downloads -.->|"downloads audio"| node_download_service
node_mp3quran -->|"provides audio"| node_audio_service
node_user -->|"browses hadith"| node_hadith
node_user -->|"checks prayer times"| node_prayer
node_user -->|"reads adhkar"| node_adhkar
node_user -->|"keeps research"| node_research
node_user -->|"reads books"| node_library
node_openiti -->|"provides books"| node_library
node_user -->|"tracks reading"| node_kahf
node_user -->|"plans completion"| node_khatmah
node_app -->|"loads preferences"| node_settings

click node_reader "https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/ui/PagerActivity.kt"
click node_quran_data "https://github.com/z6il/quran_android/blob/main/common/data/src/main/java/com/quran/data/core/QuranInfo.kt"
click node_quran_files "https://github.com/z6il/quran_android/blob/main/common/data/src/main/java/com/quran/data/core/QuranFileManager.kt"
click node_search "https://github.com/z6il/quran_android/blob/main/common/search/src/main/java/com/quran/common/search/ArabicSearcher.kt"
click node_translation_manager "https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/ui/TranslationManagerActivity.kt"
click node_audio_service "https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/service/AudioService.kt"
click node_audio_downloads "https://github.com/z6il/quran_android/blob/main/feature/downloadmanager/src/main/kotlin/com/quran/mobile/feature/downloadmanager/SheikhAudioDownloadsActivity.kt"
click node_download_service "https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/service/QuranDownloadService.kt"
click node_download_notifier "https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/service/util/QuranDownloadNotifier.java"
click node_hadith "https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/hadith"
click node_library "https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/library"
click node_research "https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/research"
click node_prayer "https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/prayer"
click node_adhkar "https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/adhkar"
click node_khatmah "https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/khatmah"
click node_kahf "https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/kahf"
click node_app "https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/QuranApplication.kt"
click node_settings "https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/util/QuranSettings.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_reader,node_quran_data,node_quran_files,node_search,node_translation_manager toneBlue
class node_audio_service,node_audio_downloads,node_download_service,node_download_notifier toneAmber
class node_prayer,node_adhkar,node_khatmah,node_kahf toneMint
class node_hadith,node_library,node_research toneRose
class node_app,node_settings,node_user,node_mp3quran,node_openiti toneIndigo
```

## Components

### Quran reading

- [Quran reader](https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/ui/PagerActivity.kt): `app/src/main/java/com/quran/labs/androidquran/ui/PagerActivity.kt`
- [Quran data](https://github.com/z6il/quran_android/blob/main/common/data/src/main/java/com/quran/data/core/QuranInfo.kt): `common/data/src/main/java/com/quran/data/core/QuranInfo.kt`
- [Quran files](https://github.com/z6il/quran_android/blob/main/common/data/src/main/java/com/quran/data/core/QuranFileManager.kt): `common/data/src/main/java/com/quran/data/core/QuranFileManager.kt`
- [Verse search](https://github.com/z6il/quran_android/blob/main/common/search/src/main/java/com/quran/common/search/ArabicSearcher.kt): `common/search/src/main/java/com/quran/common/search/ArabicSearcher.kt`
- [Translations](https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/ui/TranslationManagerActivity.kt): `app/src/main/java/com/quran/labs/androidquran/ui/TranslationManagerActivity.kt`

### Audio and downloads

- [Audio playback](https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/service/AudioService.kt): `app/src/main/java/com/quran/labs/androidquran/service/AudioService.kt`
- [Reciter downloads](https://github.com/z6il/quran_android/blob/main/feature/downloadmanager/src/main/kotlin/com/quran/mobile/feature/downloadmanager/SheikhAudioDownloadsActivity.kt): `feature/downloadmanager/src/main/kotlin/com/quran/mobile/feature/downloadmanager/SheikhAudioDownloadsActivity.kt`
- [Download service](https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/service/QuranDownloadService.kt): `app/src/main/java/com/quran/labs/androidquran/service/QuranDownloadService.kt`
- [Download status](https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/service/util/QuranDownloadNotifier.java): `app/src/main/java/com/quran/labs/androidquran/service/util/QuranDownloadNotifier.java`

### Worship tools

- [Prayer and qibla](https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/prayer): `app/src/main/java/com/quran/labs/androidquran/feature/prayer`
- [Adhkar](https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/adhkar): `app/src/main/java/com/quran/labs/androidquran/feature/adhkar`
- [Khatmah planner](https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/khatmah): `app/src/main/java/com/quran/labs/androidquran/feature/khatmah`
- [Kahf tracker](https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/kahf): `app/src/main/java/com/quran/labs/androidquran/feature/kahf`

### Study and research

- [Hadith reader](https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/hadith): `app/src/main/java/com/quran/labs/androidquran/feature/hadith`
- [Book library](https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/library): `app/src/main/java/com/quran/labs/androidquran/feature/library`
- [Research notebook](https://github.com/z6il/quran_android/tree/main/app/src/main/java/com/quran/labs/androidquran/feature/research): `app/src/main/java/com/quran/labs/androidquran/feature/research`

### App platform

- [Application setup](https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/QuranApplication.kt): `app/src/main/java/com/quran/labs/androidquran/QuranApplication.kt`
- [App preferences](https://github.com/z6il/quran_android/blob/main/app/src/main/java/com/quran/labs/androidquran/util/QuranSettings.java): `app/src/main/java/com/quran/labs/androidquran/util/QuranSettings.java`

### Other components

- **Reader**
- **MP3 Quran**
- **OpenITI corpus**

## Connections

- Reader → Quran reader: reads Quran
- Quran reader → Quran data: uses verse mapping
- Reader → Verse search: searches verses
- Reader → Translations: manages translations
- Translations → Download service: starts downloads (evidence: `app/src/main/java/com/quran/labs/androidquran/ui/TranslationManagerActivity.kt`)
- Download service → Download status: reports progress (evidence: `app/src/main/java/com/quran/labs/androidquran/service/QuranDownloadService.kt`)
- Reader → Audio playback: plays recitation
- Reader → Reciter downloads: gets reciters
- Reciter downloads → Download service: downloads audio
- MP3 Quran → Audio playback: provides audio
- Reader → Hadith reader: browses hadith
- Reader → Prayer and qibla: checks prayer times
- Reader → Adhkar: reads adhkar
- Reader → Research notebook: keeps research
- Reader → Book library: reads books
- OpenITI corpus → Book library: provides books
- Reader → Kahf tracker: tracks reading
- Reader → Khatmah planner: plans completion
- Application setup → App preferences: loads preferences (evidence: `app/src/main/java/com/quran/labs/androidquran/QuranApplication.kt`)
