Typography carries meaning.
Bundled Arabic fonts and deliberate Basmala/Istiadhah rendering protect rhythm and readability instead of treating Arabic as a translated afterthought.
Open source · live APK and Firefox add-on · 2026
An Arabic-first prayer and Azkar system that keeps one calm, RTL-native experience across Android, Electron desktop, and a Manifest V3 browser extension. The hard part is the shared product surface underneath platform-specific scheduling and lifecycle rules.


01 · Architecture
The product’s visual consistency comes from a shared renderer and data contract. Electron, Android, and Manifest V3 each add their own lifecycle and permission behavior, but the prayer and Azkar experience stays recognizably the same.
Reusable views, settings, themes, Arabic typography, bundled content, and the core prayer-time presentation are composed once, then hosted by each target.
02 · Time and reliability
Prayer times change. The scheduler therefore creates a finite horizon, refreshes it, and cancels/reschedules when settings or location change. It does not pretend that one day of alarms is an eternal schedule.
One rolling Android horizon · up to 420 scheduled notifications · explicit refresh and cancellation behavior
Desktop polls and refreshes. Android holds a 28-day schedule and respects channels/silent behavior. The Firefox surface follows its own extension lifecycle and storage constraints. Desktop and Android deduplicate, cancel, and reschedule rather than stacking stale reminders.
03 · Visual system
The app defines 114 CSS themes, with 16 featured in the primary visual system. Themes change accent, background, typography, and component atmosphere while keeping the Arabic reading experience legible.
Bundled Arabic fonts and deliberate Basmala/Istiadhah rendering protect rhythm and readability instead of treating Arabic as a translated afterthought.
Adhkar and cached prayer data remain available without connectivity, with reminders and summaries built around the same state.
31 automated tests cover RTL, settings, themes, scheduler behavior, midnight edges, and platform-facing interactions.
04 · Release engineering
Zakkir is packaged for Windows, Debian, AppImage, Android, and Firefox. GitHub Actions builds the release surfaces, while platform adapters keep packaging, storage, permissions, and scheduling concerns out of the shared Arabic-first experience.
Windows, Debian, and AppImage packages share the renderer, bundled content, fonts, themes, and desktop reminder adapter.
Native notification channels, location access, and the 28-day scheduling horizon are explicit mobile responsibilities.
Manifest V3 packaging, popup constraints, extension storage, and settings wrap the same prayer and Azkar core.
A location or method change refreshes prayer times before dependent countdown and reminder state is rebuilt.
Offsets and notification preferences regenerate bounded schedules with deterministic identities instead of accumulating duplicates.
Automated tests cover the day boundary, RTL rendering, settings, themes, scheduler behavior, and platform-facing interactions.
05 · Product in motion
The two walkthroughs show the experience running on Android and Firefox. The Android recording keeps the same 9:20 phone proportions as the app itself; the Firefox recording stays in its wide browser frame. The APK is available for a hands-on review of the mobile build.