# islamsamfawzy/islami-app-islam architecture

> Architecture diagram of the GitHub repository islamsamfawzy/islami-app-islam, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/islamsamfawzy/islami-app-islam
- Repository: https://github.com/islamsamfawzy/islami-app-islam

## Overview

islami is a Flutter Islamic-practice companion app. Its repository provides Quran reading and progress, prayer times and adhan reminders, Qibla direction, prayer guidance, azkar, hadith, tasbeh, radio/reciter playback, and downloads. The likely user workflow is to open the app, select a devotional feature, and view or use its content; only the native adhan and method-channel wiring is visible in sampled source, so Flutter feature-to-feature links are omitted. The native alarm path is explicit: Android schedules alarms, a receiver starts adhan playback and schedules the next occurrence, with a reminder notification fallback.

Main entry points: [`android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanScheduler.kt`](https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanScheduler.kt) (Adhan scheduler), [`android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanReceiver.kt`](https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanReceiver.kt) (Prayer alarm receiver), [`android/app/src/main/kotlin/com/thecofounderstudio/islami/MainActivity.kt`](https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/MainActivity.kt) (Android method channels), [`android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanService.kt`](https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanService.kt) (Adhan playback service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App experience"]
  node_flutter["Flutter app<br/>[main.dart]"]
  node_home["Home navigation"]
  node_intro["Intro and onboarding"]
  node_core_services["Shared services"]
end

subgraph group_content["Devotional content"]
  node_quran["Quran reading"]
  node_sura_data["Sura content"]
  node_azkar["Azkar"]
  node_azkar_data["Azkar content"]
  node_hadith["Hadith collection"]
  node_hadith_data["Hadith content"]
end

subgraph group_prayer["Prayer tools"]
  node_prayer_guide["Prayer guide"]
  node_guide_data["Guide content"]
  node_prayer_times["Prayer times"]
  node_qibla["Qibla compass"]
  node_tasbeh["Tasbeh counter"]
end

subgraph group_media["Audio and downloads"]
  node_radio["Radio and reciters"]
  node_downloads["Audio downloads"]
end

subgraph group_native["Android adhan runtime"]
  node_method_channels["Android method channels<br/>[MainActivity.kt]"]
  node_scheduler["Adhan scheduler<br/>[AdhanScheduler.kt]"]
  node_boot_receiver["Schedule recovery"]
  node_receiver["Prayer alarm receiver<br/>[AdhanReceiver.kt]"]
  node_adhan_service["Adhan playback service<br/>[AdhanService.kt]"]
  node_reminder["Fallback reminder"]
end

node_person(("App user"))
node_alarm["Android alarm manager"]
node_system["Android system"]

node_person -->|"uses"| node_flutter
node_method_channels -->|"schedules alarms"| node_scheduler
node_method_channels -->|"cancels alarms"| node_scheduler
node_method_channels -->|"reads declination"| node_system
node_scheduler -->|"arms"| node_alarm
node_alarm -->|"fires"| node_receiver
node_receiver -->|"reschedules prayer"| node_scheduler
node_receiver -->|"starts playback"| node_adhan_service
node_receiver -->|"shows on failure"| node_reminder
node_adhan_service -->|"plays audio"| node_system
node_adhan_service -->|"notifies"| node_person
node_boot_receiver -->|"restores schedule"| node_scheduler
node_scheduler -->|"persists schedule"| node_system

click node_flutter "https://github.com/islamsamfawzy/islami-app-islam/blob/master/lib/main.dart"
click node_home "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/home/presentation"
click node_intro "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/intro/presentation"
click node_quran "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/quran"
click node_sura_data "https://github.com/islamsamfawzy/islami-app-islam/tree/master/assets/files/suras"
click node_azkar "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/azkar"
click node_azkar_data "https://github.com/islamsamfawzy/islami-app-islam/tree/master/assets/files/azkar"
click node_hadith "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/hadith"
click node_hadith_data "https://github.com/islamsamfawzy/islami-app-islam/tree/master/assets/files/hadeeth"
click node_prayer_guide "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/prayer_guide"
click node_guide_data "https://github.com/islamsamfawzy/islami-app-islam/tree/master/assets/files/prayer_guide"
click node_prayer_times "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/time"
click node_qibla "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/qibla"
click node_tasbeh "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/tasbeh"
click node_radio "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/radio"
click node_downloads "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/downloads"
click node_core_services "https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/core/services"
click node_method_channels "https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/MainActivity.kt"
click node_scheduler "https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanScheduler.kt"
click node_boot_receiver "https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanBootReceiver.kt"
click node_receiver "https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanReceiver.kt"
click node_adhan_service "https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanService.kt"
click node_reminder "https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanReminderNotification.kt"

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_flutter,node_home,node_intro,node_core_services,node_person toneBlue
class node_quran,node_sura_data,node_azkar,node_azkar_data,node_hadith,node_hadith_data toneAmber
class node_prayer_guide,node_guide_data,node_prayer_times,node_qibla,node_tasbeh toneMint
class node_radio,node_downloads toneRose
class node_method_channels,node_scheduler,node_boot_receiver,node_receiver,node_adhan_service,node_reminder,node_alarm,node_system toneIndigo
```

## Components

### App experience

- [Flutter app](https://github.com/islamsamfawzy/islami-app-islam/blob/master/lib/main.dart): `lib/main.dart`
- [Home navigation](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/home/presentation): `lib/features/home/presentation`
- [Intro and onboarding](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/intro/presentation): `lib/features/intro/presentation`
- [Shared services](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/core/services): `lib/core/services`

### Devotional content

- [Quran reading](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/quran): `lib/features/quran`
- [Sura content](https://github.com/islamsamfawzy/islami-app-islam/tree/master/assets/files/suras): `assets/files/suras`
- [Azkar](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/azkar): `lib/features/azkar`
- [Azkar content](https://github.com/islamsamfawzy/islami-app-islam/tree/master/assets/files/azkar): `assets/files/azkar`
- [Hadith collection](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/hadith): `lib/features/hadith`
- [Hadith content](https://github.com/islamsamfawzy/islami-app-islam/tree/master/assets/files/hadeeth): `assets/files/hadeeth`

### Prayer tools

- [Prayer guide](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/prayer_guide): `lib/features/prayer_guide`
- [Guide content](https://github.com/islamsamfawzy/islami-app-islam/tree/master/assets/files/prayer_guide): `assets/files/prayer_guide`
- [Prayer times](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/time): `lib/features/time`
- [Qibla compass](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/qibla): `lib/features/qibla`
- [Tasbeh counter](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/tasbeh): `lib/features/tasbeh`

### Audio and downloads

- [Radio and reciters](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/radio): `lib/features/radio`
- [Audio downloads](https://github.com/islamsamfawzy/islami-app-islam/tree/master/lib/features/downloads): `lib/features/downloads`

### Android adhan runtime

- [Android method channels](https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/MainActivity.kt): `android/app/src/main/kotlin/com/thecofounderstudio/islami/MainActivity.kt`
- [Adhan scheduler](https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanScheduler.kt): `android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanScheduler.kt`
- [Schedule recovery](https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanBootReceiver.kt): `android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanBootReceiver.kt`
- [Prayer alarm receiver](https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanReceiver.kt): `android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanReceiver.kt`
- [Adhan playback service](https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanService.kt): `android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanService.kt`
- [Fallback reminder](https://github.com/islamsamfawzy/islami-app-islam/blob/master/android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanReminderNotification.kt): `android/app/src/main/kotlin/com/thecofounderstudio/islami/AdhanReminderNotification.kt`

### Other components

- **App user**
- **Android alarm manager**
- **Android system**

## Connections

- App user → Flutter app: uses
- Android method channels → Adhan scheduler: schedules alarms
- Android method channels → Adhan scheduler: cancels alarms
- Android method channels → Android system: reads declination
- Adhan scheduler → Android alarm manager: arms
- Android alarm manager → Prayer alarm receiver: fires
- Prayer alarm receiver → Adhan scheduler: reschedules prayer
- Prayer alarm receiver → Adhan playback service: starts playback
- Prayer alarm receiver → Fallback reminder: shows on failure
- Adhan playback service → Android system: plays audio
- Adhan playback service → App user: notifies
- Schedule recovery → Adhan scheduler: restores schedule
- Adhan scheduler → Android system: persists schedule
