A single-purpose Android app that gently reminds you to seek forgiveness (استغفار) with a small heads-up notification every 30 minutes.
أستغفر الله — I seek forgiveness from Allah.
Reminders can be easy to ignore. This app does exactly one thing: it sends a small pop-up notification saying Astaghfirullah — أستغفر الله every 30 minutes, and nothing else. No counters, no goals, no history, no navigation. You open it, tap Start, and quietly remember Allah throughout your day.
11:30 PM), so you know it’s working.Single-activity Jetpack Compose app with a clean separation between UI, reminders, and data.
MainActivity ──► ui/MainScreen (Compose UI)
│ │
▼ ▼
MainViewModel ◄── data/Prefs (DataStore: running state, next reminder time)
│
▼
reminders/ReminderScheduler ──► WorkManager (PeriodicWorkRequest, 30 min)
│
▼
reminders/ReminderWorker ──► reminders/NotificationHelper (heads-up notification)
│
▼
receiver/BootReceiver ──► reschedules after device reboot
Astaghfirullah/
├── README.md
├── LICENSE
├── PRIVACY_POLICY.md
├── settings.gradle.kts
├── build.gradle.kts
├── gradle.properties
├── gradlew / gradlew.bat
└── gradle/wrapper/
└── app/
├── build.gradle.kts
├── proguard-rules.pro
└── src/main/
├── AndroidManifest.xml
├── java/com/astaghfirullah/reminder/
│ ├── MainActivity.kt # Activity + permission flow
│ ├── AppConfig.kt # single source of truth for config/constants
│ ├── ui/
│ │ ├── MainScreen.kt # the single screen
│ │ ├── components/ # reusable UI pieces
│ │ └── theme/ # Material 3 colors/typography/theme
│ ├── viewmodel/
│ │ └── MainViewModel.kt # state + scheduler wiring
│ ├── reminders/
│ │ ├── ReminderInterval.kt # configurable interval enum
│ │ ├── ReminderScheduler.kt # schedule/cancel periodic work
│ │ ├── ReminderWorker.kt # triggers the reminder
│ │ └── NotificationHelper.kt # channel + notification builder
│ ├── data/
│ │ └── Prefs.kt # DataStore persistence
│ └── receiver/
│ └── BootReceiver.kt # reschedule after reboot
└── res/ # fonts, icons, adaptive launcher icon
compileSdk 36, minSdk 26, targetSdk 36No Android Studio on the machine? Install it from https://developer.android.com/studio.
Astaghfirullah folder../gradlew assembleRelease
The APK is written to app/build/outputs/apk/release/app-release.apk. Release builds are minified (R8) with resource shrinking. Sign it with your own keystore before publishing.
v1.0 (current) — 30-minute reminder, start/stop, test notification, light/dark theme, persisted state.
MIT — see LICENSE.