سُبْحَانَ اللَّهِ وَبِحَمْدِهِ، سُبْحَانَ اللَّهِ الْعَظِيمِ
This document specifies a lightweight, offline-first Android application whose single purpose is to display beautiful floating Islamic Dhikr cards over other applications at user-defined times and intervals. The product exists for Arabic-first Muslim users who want a calm, dignified, unobtrusive reminder of a chosen Dhikr to appear above whatever app they are currently using, without being pulled out of that app.
The app does exactly one main job: let the user enter or select a Dhikr, configure when and how often it appears, and display it in a beautiful, readable floating card. It is not a general Islamic app. It does not include a Dhikr counter, statistics dashboard, audio library, Quran reader, social features, accounts, cloud synchronization, or unrelated modules.
The audience is a single active human role — the Dhikr Reminder User — who enters Arabic Dhikr text (including diacritics, punctuation, numbers, and mixed Arabic/English), configures schedules, intervals, weekdays, dates, display duration, and floating-card appearance, and then relies on the floating card to appear over whatever app they are using. The interface is Arabic-first and RTL throughout.
The product is a native Android application built with Kotlin and Jetpack Compose using Material 3, backed by a local persistent database (Room or another appropriate persistent storage solution). It is offline-first: internet access is not required for core functionality. All user-created Dhikr, reminder schedules, display settings, and enabled/paused status are persisted locally on the device.
The core mechanism is a reliable reminder scheduling component (AlarmManager for appropriately timed reminders where permitted, WorkManager only for tasks that do not require exact timing) that triggers a dedicated overlay service. When permitted by the operating system, the overlay service displays the configured Dhikr in a floating card above the currently open application using an appropriate overlay mechanism such as TYPE_APPLICATION_OVERLAY, without unnecessarily opening the full app. When floating overlays are unavailable or permission is denied, a normal Android notification is displayed as a fallback.
The app must never claim that exact delivery is guaranteed when Android restrictions prevent it, and it must respect notification settings, Do Not Disturb, and system policies.
Delivery ownership. The product is delivered as a complete, buildable Android Studio project and a working APK if the build environment supports APK generation. It is not delivered as only a UI prototype, screenshots, pseudocode, or incomplete sample code. The core floating Dhikr reminder feature, reliability, readability, simplicity, and professional visual quality take priority over unnecessary features.
Access ownership. The app is a personal, single-user, on-device utility. There are no accounts, no sign-in, no cloud synchronization, and no server-side identity. All four application surfaces are reachable without any application-owned identity: the Landing entry surface, Add Dhikr, My Reminders, and Permissions. The only access gates in the product are Android operating-system permissions (notification permission on supported Android versions, display-over-other-apps permission, and exact alarm permission only where needed and permitted), which are explained in Arabic before being requested and are handled on the Permissions surface.
Current vs. future boundary. Everything specified in this document is current. No future-horizon features are accepted. The explicit exclusions — no Dhikr counter, no statistics dashboard, no audio library, no Quran reader, no social features, no accounts, no cloud synchronization, no unrelated modules, no general Islamic app scope — remain binding and are not softened by this document.
Reliability boundary. Android may delay, suppress, or block scheduled delivery through battery restrictions, background execution limits, Do Not Disturb, notification settings, and system policies. The app handles these conditions as far as Android permits, explains them honestly in Arabic, and never promises guaranteed exact delivery.
Not applicable. No reference directive in this project declares a content_source, so no source content inventory is produced.
FR-1 — Single-purpose floating Dhikr app. As a Dhikr Reminder User, I should have a real, lightweight Android application dedicated exclusively to displaying floating Islamic Dhikr cards over other applications at user-defined times and intervals, so that my only interaction with the product is entering or selecting a Dhikr, configuring when and how often it appears, and seeing it in a beautiful, readable floating card. (explicit)
FR-2 — Create a reminder with all required fields. As a Dhikr Reminder User, I should be able to create a reminder on the Add Dhikr screen with Dhikr text (required), an optional title, a start time or first display time, a repeat interval in minutes or hours, optional specific times of day, selected days of the week, a start date and optional end date, a display duration, a floating card design, and an enable/disable toggle, so that the reminder matches exactly how and when I want the Dhikr shown. (explicit)
FR-3 — Exact text preservation. As a Dhikr Reminder User, I should be able to enter any Arabic text, including diacritics, punctuation, numbers, and mixed Arabic/English, and have the entered text preserved exactly, so that religious text is never rewritten or automatically corrected. (explicit)
FR-4 — Scheduling and repetition modes. As a Dhikr Reminder User, I should be able to configure a reminder to display once at a selected time, repeat every X minutes, repeat every X hours, display at multiple selected times each day, repeat on selected weekdays, and run between a start date and an optional end date, so that the schedule matches my routine. (explicit)
FR-5 — Pause, resume, edit, and delete. As a Dhikr Reminder User, I should be able to pause, resume, edit, and delete a reminder, so that I stay in control of what appears and when. (explicit)
FR-6 — No duplicate alarms or unintended repeats. As a Dhikr Reminder User, I should not receive duplicate alarms or unintended repeated displays for the same reminder, so that the reminder stays respectful rather than intrusive. (explicit)
FR-7 — Reschedule after reboot, time changes, and app updates. As a Dhikr Reminder User, I should have my reminders rescheduled appropriately after device reboot, time changes, or application updates where Android permits, so that my schedule survives ordinary device events. (explicit)
FR-8 — Floating card over the current app. As a Dhikr Reminder User, I should see the selected Dhikr in a floating card above the currently open application at the scheduled time, without the full app being unnecessarily opened, using an appropriate overlay mechanism such as TYPE_APPLICATION_OVERLAY when permitted by the operating system. (explicit)
FR-9 — Card behavior guarantees. As a Dhikr Reminder User, I should have the card appear at the scheduled time as reliably as Android permits, show the exact configured Dhikr text, automatically disappear after the selected duration, provide a clear close button, support swipe-to-dismiss where practical, avoid covering essential system controls, never lock me out of the current application, and never duplicate for the same reminder. (explicit)
FR-10 — Notification fallback. As a Dhikr Reminder User, I should receive a normal Android notification when floating overlays are unavailable or overlay permission is denied, so that the reminder still reaches me in a usable form. (explicit)
FR-11 — Display duration options. As a Dhikr Reminder User, I should be able to choose a display duration of 3, 5, 10, 15, 30, or 60 seconds, a custom duration, or until manually dismissed, so that the card stays exactly as long as I want. (explicit)
FR-12 — Dismissal timer cancellation. As a Dhikr Reminder User, I should have the dismissal timer cancelled when I close the card manually, so that a manual close is final and no stale timer fires afterwards. (explicit)
FR-13 — Professional visual design. As a Dhikr Reminder User, I should experience a polished, modern, elegant, peaceful, and premium app with a clean Arabic-first RTL interface, beautiful typography, comfortable spacing, rounded cards, subtle shadows, carefully selected colors, excellent text contrast, smooth restrained animations, and light and dark themes. (explicit)
FR-14 — Floating card styles. As a Dhikr Reminder User, I should be able to choose a floating card style from Minimal, Soft Green, Elegant Gold, Night, Islamic Geometric, and Glass. (explicit)
FR-15 — Live preview before saving. As a Dhikr Reminder User, I should see a live preview of the floating card before saving a reminder, so that I know exactly how the Dhikr will look when it appears. (explicit)
FR-16 — Floating card customization. As a Dhikr Reminder User, I should be able to configure the card style, background color, text color, Arabic text size, font family from fonts actually available in the app, text alignment, card width (small, medium, or large), card position (top, center, or bottom), corner radius, padding, and animation on/off. (explicit)
FR-17 — Card readability and boundary respect. As a Dhikr Reminder User, I should have the card remain readable, respect screen boundaries and display cutouts, and adapt to long Dhikr text without clipping it. (explicit)
FR-18 — Simple home screen contents. As a Dhikr Reminder User, I should have a home screen containing only Add Dhikr, My Reminders, enable/disable reminders, edit and delete reminders, preview floating card, and open reminder settings. (explicit)
FR-19 — Reminder item summary. As a Dhikr Reminder User, I should see each reminder item show its title or a short text preview, its schedule, its repetition interval, its display duration, and its enabled/paused status. (explicit)
FR-20 — Arabic permission explanations before requesting. As a Dhikr Reminder User, I should be told in Arabic what a permission is for before it is requested, so that I can make an informed choice. (explicit)
FR-21 — Permission and reliability handling. As a Dhikr Reminder User, I should have the app handle notification permission on supported Android versions, display over other apps permission, exact alarm permission only where needed and permitted, reboot restoration where supported, time zone and system time changes, and battery restrictions and background execution limits. (explicit)
FR-22 — Open Android settings and re-check on return. As a Dhikr Reminder User, I should have a button that opens the relevant Android settings when required, and the app should check permissions again when I return to it. (explicit)
FR-23 — Honest delivery claims. As a Dhikr Reminder User, I should never be told that exact delivery is guaranteed when Android restrictions prevent it, and the app should respect notification settings, Do Not Disturb, and system policies. (explicit)
FR-24 — Correct scheduling component per timing need. As a Dhikr Reminder User, I should have AlarmManager used for appropriately timed reminders where permitted and WorkManager used only for tasks that do not require exact timing, with the implementation chosen according to the Android version and required timing precision. (explicit)
FR-25 — Technical foundation. As a Dhikr Reminder User, I should have the app built with Kotlin, Jetpack Compose, Material 3, a suitable local database such as Room or another appropriate persistent storage solution, a reliable reminder scheduling component, and a dedicated overlay service where permitted. (explicit)
FR-26 — Local persistence and offline-first. As a Dhikr Reminder User, I should have my user-created Dhikr, reminder schedules, display settings, and enabled/paused status persisted locally, with the app kept lightweight and offline-first and internet access not required for core functionality. (explicit)
FR-27 — Clean architecture and lifecycle correctness. As a Dhikr Reminder User, I should have the app use clean architecture and maintainable code, handling lifecycle events, service cleanup, scheduling cancellation, permission denial, and application restarts correctly. (explicit)
FR-28 — Functional testing acceptance. As a Dhikr Reminder User, I should be able to rely on verified behavior: creating and saving a Dhikr; the saved reminder appearing in the reminder list; a scheduled card appearing above another application when permissions allow; the card disappearing after the configured duration; repeating reminders running per their schedules subject to Android restrictions; pausing or disabling stopping future displays; editing or deleting updating or cancelling scheduled alarms; device restart restoring schedules where supported; denying overlay permission triggering a usable notification fallback; Arabic text and diacritics rendering correctly; and the card always being dismissible. (explicit)
FR-29 — Complete buildable deliverable. As a Dhikr Reminder User, I should receive a complete, buildable Android Studio project and a working APK if the build environment supports APK generation, not only a UI prototype, screenshots, pseudocode, or incomplete sample code. (explicit)
FR-30 — Priority ordering. As a Dhikr Reminder User, I should have the core floating Dhikr reminder feature, reliability, readability, simplicity, and professional visual quality prioritized over unnecessary features. (explicit)
FR-31 — Grant notification permission on supported Android versions. As a Dhikr Reminder User, I should be able to grant notification permission on supported Android versions so that the notification fallback can reach me. (required_inference)
FR-32 — Grant display-over-other-apps permission. As a Dhikr Reminder User, I should be able to grant display-over-other-apps permission so that floating card overlays can be shown. (required_inference)
FR-33 — Grant exact alarm permission only where needed and permitted. As a Dhikr Reminder User, I should be able to grant exact alarm permission only where it is needed and permitted, so that appropriately timed reminders can fire precisely. (required_inference)
FR-34 — Allow reboot restoration and background execution where Android permits. As a Dhikr Reminder User, I should be able to allow reboot restoration and background execution where Android permits, so that my reminders survive a restart and continue to fire. (required_inference)
Product context. A Muslim user who wants a chosen Dhikr to appear gently over whatever app they are using, at times and intervals they define. They work in Arabic, read diacritics, and value readability and dignity over novelty. They are not looking for a general Islamic app; they want one calm, premium, unobtrusive reminder tool that does exactly one job.
Primary goal. Configure a Dhikr and its schedule once, then have the exact configured Dhikr appear in a beautiful, readable floating card over the current app at the right times — and always be able to dismiss it.
Distinct accepted responsibilities.
Relevant inputs and decisions. The Dhikr text itself; the schedule mode and its parameters; the duration; the card design values; whether a reminder is enabled, paused, or deleted; and whether to grant each Android permission.
Interactions with other accepted participants. None. This is a single-user, on-device product with no accounts, no sharing, and no other human participant. The only other actors are Android system components (the alarm scheduler, the overlay window manager, the notification system, and the boot receiver), which are non-persona system actors.
Observable success. The exact configured Dhikr appears in the floating card over the current app at the scheduled time, in the configured style and duration; the card is always dismissible; pausing or disabling stops future displays; editing or deleting updates or cancels the scheduled alarms; and after a device restart the schedules are restored where Android permits.
Source-backed constraints. The app must not add a Dhikr counter, statistics dashboard, audio library, Quran reader, social features, accounts, cloud synchronization, or unrelated modules. The card must never lock the user out of the current application and must avoid covering essential system controls. The app must never claim exact delivery is guaranteed when Android restrictions prevent it.
The creative direction is authoritative for this section. The muse is Zaha Hadid; the headline is fluid parametric grandeur for a floating Dhikr card — sweeping continuous curves, pearl-white luminous surfaces, and motion frozen in form, mapped onto a floating card that should feel like a smooth, weightless plane hovering over the phone.
Color tokens — light mode
| Role | Hex | Use |
|---|---|---|
| Background | #F4F1EC | Pearl-warm off-white ground |
| Surface | #FFFFFF | Pure white floating card surfaces |
| Text | #1B1B1F | Primary text |
| Primary | #2F3A45 | Deep charcoal-slate for primary text and structural UI |
| Accent | #C9A227 | Restrained gold: active reminder state, Elegant Gold preset, hairline rule under headers |
| Muted | #8A8578 | Muted stone for secondary meta text |
Color tokens — dark mode
| Role | Hex | Use |
|---|---|---|
| Background | #14161A | Charcoal ground |
| Surface | #1E2126 | Elevated card surface |
| Text | #F4F1EC | Primary text |
| Primary | #F4F1EC | Structural UI on dark ground |
| Accent | #C9A227 | Gold accent stays |
| Muted | #8A8578 | Secondary meta text |
Ratio: 70% neutral ground, 20% white surface, 8% charcoal, 2% gold.
Typography
Shape language. Continuous sweeping curves and capsule forms. Floating card corners use a 28–32dp radius with a very subtle asymmetric top-start curve (radius 40dp) to echo Hadid's flowing surfaces. Buttons are full capsules. Section boundaries are gentle arcs rather than hard rules. No sharp 90° corners on interactive surfaces; only hairlines and dividers stay straight.
Spacing rhythm. Single-column, centered, generous margins: 24dp mobile, 40dp tablet. Add/Edit is a calm vertical sequence of labelled fields with 20dp gaps.
Imagery style. No photography, no illustration, no blobs. Imagery is purely structural: a single hairline gold rule (1dp, 48–64dp long) under section headers; a faint pearl-to-white vertical wash on the home header; and the card's own layered shadow — two soft shadows, 0 8dp 24dp rgba(27,27,31,0.06) and 0 2dp 6dp rgba(27,27,31,0.04). The Islamic Geometric preset is the only ornament: a very low-opacity (6%) repeating 8-point star tessellation rendered as a vector drawable behind the card text, clipped to the card's curved boundary, never touching the text itself.
Explicitly avoided: blue-on-white or indigo accents (#2563EB, #4F46E5, #6366F1); Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Poppins, or system-ui for headings or body; gradient-blob heroes, glassmorphism blur panels, or floating 3D primitives; grids of identical hover-lift cards with uniform 12dp radius; springy or bouncy motion; any looping decorative animation; any ornament or pattern that overlaps Arabic text or diacritics; sharp 90° corners on buttons, cards, or chips; statistics, counters, audio players, Quran readers, or social modules.
Readable text and controls stay whole at every viewport. Headlines, wordmarks, labels, numbers, and cards' text and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit, and no other element covers any part of them. Decoration and motion may be cropped, bled, or overlapped as the direction asks, as long as they cover no readable text or control. With reduced motion, the layout remains a usable static arrangement.
The public entry is not a marketing hero but a calm home composition built around the product's own object.
A full-width pearl ground (#F4F1EC) fills the screen with a 48dp top safe area. Flush-right in RTL sits a single 40sp Jost Light line reading ذكر (or the app name). Beneath it, a 1dp gold hairline (#C9A227), 64dp wide — the only decorative mark on the surface.
Directly below, the live floating-card preview floats on the ground: the actual Dhikr card component rendered inline at medium width, centered, carrying its soft double shadow, showing a sample Dhikr in Noto Naskh Arabic at 28sp. Its corners use the asymmetric radius — 40dp top-start, 28dp elsewhere — so the edge reads as swept rather than rounded. This preview is the product demo: the user sees the real object before adding anything.
Beneath the preview, a single full-width capsule button أضف ذكراً in charcoal (#2F3A45) with white text. Secondary entries to My Reminders and Permissions sit below it as quiet text actions.
No gradient, no blob, no stock image. The dominant element is the floating card preview itself. The composition recomposes only accepted content, states, and controls — it introduces no new behavior, page, or destination.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: layered_2d
Landing Hero Motion Brief
cubic-bezier(0.22, 1, 0.36, 1) — one smooth architectural sweep, no bounce — and comes to rest as the dominant element; the capsule button أضف ذكراً fades in last. The outcome is a composed first frame in which the product's own object is already visible and the user's next action is obvious.cubic-bezier(0.22, 1, 0.36, 1). Card exit is a 220ms fade-and-slight-scale-down. Card style changes cross-fade in 200ms. Toggle and chip state changes are 120ms. No particles, no looping animations, no spring physics. Live preview updates instantly.#F4F1EC; 48dp top safe area; ذكر at 40sp Jost Light 300, flush-right in RTL; 1dp #C9A227 hairline 64dp wide beneath it; the floating-card preview centered at medium width with its double shadow and asymmetric radius; the charcoal capsule button أضف ذكراً below; quiet text entries to My Reminders and Permissions at the bottom.NFR-1 — Offline-first operation. Internet access must not be required for core functionality. All accepted behavior works with no network. (explicit) — Rationale: the product is a personal on-device reminder utility.
NFR-2 — Local persistence. User-created Dhikr, reminder schedules, display settings, and enabled/paused status are persisted locally and survive app restarts. (explicit) — Rationale: the user's configuration must not be lost.
NFR-3 — Lightweight footprint. The application is kept lightweight. (explicit) — Rationale: the product is a focused single-purpose utility.
NFR-4 — Reliability within Android limits. Reminders fire as reliably as Android permits; the app never claims exact delivery is guaranteed when Android restrictions prevent it, and it respects notification settings, Do Not Disturb, and system policies. (explicit) — Rationale: honest behavior under platform constraints.
NFR-5 — Correct scheduling mechanism selection. AlarmManager is used for appropriately timed reminders where permitted; WorkManager is used only for tasks that do not require exact timing; the implementation is chosen according to the Android version and required timing precision. (explicit) — Rationale: matching mechanism to timing need is required for correct behavior.
NFR-6 — No duplicate alarms or displays. The app prevents duplicate alarms and unintended repeated displays, and avoids duplicate cards for the same reminder. (explicit) — Rationale: duplicates would make the reminder intrusive rather than respectful.
NFR-7 — Rescheduling resilience. Reminders are rescheduled appropriately after device reboot, time changes, or application updates where Android permits. (explicit) — Rationale: schedules must survive ordinary device events.
NFR-8 — Non-blocking overlay. The floating card never locks the user out of the current application and avoids covering essential system controls. (explicit) — Rationale: the card must remain an unobtrusive overlay.
NFR-9 — Readability and boundary respect. The card remains readable, respects screen boundaries and display cutouts, and adapts to long Dhikr text without clipping it. (explicit) — Rationale: the Dhikr must always be fully legible.
NFR-10 — Arabic-first RTL and contrast. The interface is Arabic-first and RTL with excellent text contrast in both light and dark themes. (explicit) — Rationale: the audience reads Arabic and diacritics and needs dignified legibility.
NFR-11 — Restrained motion. Animations are smooth and restrained, with no looping decorative animation and no springy or bouncy motion. (explicit) — Rationale: the emotional register is peaceful and respectful.
NFR-12 — Clean architecture and lifecycle correctness. The app uses clean architecture and maintainable code, handling lifecycle events, service cleanup, scheduling cancellation, permission denial, and application restarts correctly. (explicit) — Rationale: correctness under lifecycle and permission edge cases is required for reliable reminders.
NFR-13 — Buildable deliverable. The deliverable is a complete, buildable Android Studio project and a working APK if the build environment supports APK generation — not only a UI prototype, screenshots, pseudocode, or incomplete sample code. (explicit) — Rationale: the user requires a real, installable app.
NFR-14 — Verified functional behavior. The listed functional tests pass: creating and saving a Dhikr; the saved reminder appearing in the reminder list; a scheduled card appearing above another application when permissions allow; the card disappearing after the configured duration; repeating reminders running per their schedules subject to Android restrictions; pausing or disabling stopping future displays; editing or deleting updating or cancelling scheduled alarms; device restart restoring schedules where supported; denying overlay permission triggering a usable notification fallback; Arabic text and diacritics rendering correctly; and the card always being dismissible. (explicit) — Rationale: these are the acceptance criteria for the core feature.
NFR-15 — Permission transparency. Permissions are explained in Arabic before being requested, a button opens the relevant Android settings when required, and permissions are re-checked when the user returns to the app. (explicit) — Rationale: the user must make informed permission choices.
TYPE_APPLICATION_OVERLAY, where permitted. (explicit)Assumptions
[Assumption — required_inference] The device runs a supported Android version that provides the overlay, notification, and alarm mechanisms the app relies on; where a mechanism is unavailable, the app degrades to the accepted fallback and states the limitation honestly.[Assumption — required_inference] The user grants the permissions the app requests; where a permission is denied, the app uses the accepted fallback and reports the true state.[Assumption — required_inference] The build environment supports APK generation; if it does not, the complete buildable Android Studio project is still delivered.[Assumption — required_inference] The fonts used by the app are bundled with the app, so the "font family from fonts actually available in the app" choice is satisfied offline.Constraints
TYPE_APPLICATION_OVERLAY, where permitted.

معاينة البطاقة العائمة
سُبْحَانَ اللَّهِ وَبِحَمْدِهِ، سُبْحَانَ اللَّهِ الْعَظِيمِ
تعذّر قراءة التنسيق المحفوظ، لذا تُعرض البطاقة بالتنسيق البسيط.
ذِكْر
تطبيق واحد لأمرٍ واحد: يعرض أذكاراً جميلة في بطاقةٍ عائمة فوق التطبيق المفتوح، في الأوقات والفترات التي تختارها بنفسك. تُكتب البطاقة بعناية لتقرأ بوضوح، ثم تختفي وحدها بعد المدة المحددة — دون أن تُغلق عليك تطبيقك أو تقطع انتباهك.
صُمّم التطبيق لمن يودّ حضوراً هادئاً للذكر خلال يومه، واجهة عربية أصلية تقرأ التشكيل بوضوح، دون ضجيجٍ أو تحفيزٍ زائد.
يعمل دون اتصال بالإنترنت: كل تذكيراتك وإعداداتك محفوظة على جهازك.
لا حاجة إلى حساب: لا تسجيل ولا مزامنة سحابية لاستخدام التطبيق.
No comments yet. Be the first!