A desktop dhikr counter that stays on your screen while you work. Track your daily adhkar, build streaks, and grow — one press at a time.
Help wanted: The donation system is not yet functional — the
SubscriptionServiceis stubbed out and no payment integration exists. This is our highest-priority feature. If you have experience with Stripe, RevenueCat, or similar payment platforms in Flutter, we'd love your help. See Donations & Payments on the roadmap and CONTRIBUTING.md to get started.
Windows • macOS • Open Source • Donations go to charity (coming soon)
DhikrAtWork runs as a slim, always-on-top counter bar that sits over your other windows. Press a global hotkey to count without switching apps. Expand it when you want to see stats, set goals, or manage your dhikr library.
A small frameless bar (520x100) that floats above everything. Drag it anywhere. Shows your active dhikr in Arabic, the session count, today's count, and your hotkey — all at a glance.
- Global hotkey (default
Ctrl+Shift+D) — count from any app without switching windows - Session & daily counters — reset independently, right-click for more options
- Drag anywhere — position is remembered across sessions, clamped to screen edges on multi-monitor setups
Click expand to open the tabbed interface (700x500) with three tabs:
Dhikr Tab — Browse and manage your dhikr library. Select an active dhikr, add custom entries with full Arabic tashkeel support, hide or delete entries.
Stats Tab — See your progress across day, week, and month:
- Bar chart (counts by dhikr) and line chart (counts over time)
- XP level progression (Beginner through Muhsin — 9 levels)
- Current and best streaks
- Achievement badges (9 milestones from first dhikr to 100-day streak)
- Goal progress bars (daily, weekly, monthly targets)
Settings Tab — Configure your hotkey, export data (JSON/CSV), manage your donation subscription, and more.
Closing the window hides it to the system tray — DhikrAtWork keeps running in the background. The global hotkey stays active. Right-click the tray icon to quit.
Ships with 15 adhkar across five categories, all with full Arabic tashkeel and hadith references:
| Category | Includes |
|---|---|
| General Tasbih | SubhanAllah, Alhamdulillah, Allahu Akbar, La ilaha illAllah, and more |
| Post-Salah | The 33-33-34 tasbih set, Ayat al-Kursi |
| Istighfar | Astaghfirullah, Sayyid al-Istighfar |
| Salawat | Durood Ibrahim |
| Dua & Remembrance | Hawqala, HasbunAllah |
Add your own custom dhikrs with Arabic text, transliteration, translation, and optional target counts.
Download the latest release from the GitHub Releases page.
- Download
DhikrAtWork-vX.Y.Z-windows-x64.zip - Extract the zip — you will see
README.txt,Install.bat,DhikrAtWork.cer, andDhikrAtWork.msix - Right-click
Install.batand select Run as Administrator - If Windows SmartScreen appears, click More info → Run anyway
- Follow the prompts — the installer imports the certificate and installs the app
- The app launches automatically after installation
After install, DhikrAtWork appears in your Start Menu and sets up automatic background update checks every 12 hours.
- Download
DhikrAtWork-vX.Y.Z-macos-arm64.zip - Extract the zip and drag
DhikrAtWork.appto your Applications folder - Do not double-click to open — right-click (or Control-click)
DhikrAtWork.appand select Open - Click Open in the Gatekeeper confirmation dialog
- This one-time step is only required on first launch
After install, the app checks for updates automatically every 24 hours in the background.
DhikrAtWork is free open-source software distributed without paid code signing certificates. Paid certificates cost hundreds of dollars per year — skipping them keeps the project entirely free.
You can verify the app yourself:
- Check SHA256 checksums — each release includes
.sha256files. Verify your download matches:- Windows:
certutil -hashfile DhikrAtWork-vX.Y.Z-windows-x64.zip SHA256 - macOS:
shasum -a 256 DhikrAtWork-vX.Y.Z-macos-arm64.zip
- Windows:
- Scan on VirusTotal — links to VirusTotal scan results are included in each release's notes
- Review the source code — everything is in this repository; nothing is hidden
The Windows installer imports a self-signed certificate (DhikrAtWork.cer, included in the zip and committed to this repo) into your Trusted Root store. This is required for MSIX installation and Windows auto-updates. If you prefer, you can inspect Install.bat before running it — it is a plain text file.
Requires Flutter 3.11+.
git clone https://github.com/thecodeartificerX/dhikratwork.git
cd dhikratwork
flutter pub get
flutter run -d windows # or: -d macoslib/
app/ # Theme, AppLocator (cross-feature VM wiring)
data/ # Seed data (preloaded dhikrs)
models/ # Immutable domain objects
repositories/ # SQLite access with in-memory cache
services/ # Platform integrations (DB, tray, hotkey, update, subscription)
utils/ # Constants (all SQL names live here)
viewmodels/ # ChangeNotifier VMs
views/ # UI — app_shell.dart, compact/, expanded/, shared/, stats/, settings/
Architecture: MVVM + Provider with manual constructor injection. No code generation, no service locators (except AppLocator for two cross-feature ViewModels).
# Run with hot reload
.\run.ps1 # Windows (debug)
.\run.ps1 -Release # Windows (release)
flutter run -d macos # macOS
# Build
.\build.ps1 # Full pipeline: clean, pub get, analyze, test, build
.\build.ps1 -SkipClean -SkipTests # Quick rebuild
# Test
flutter test # ~300 unit + widget tests
flutter test integration_test/ -d windows # Integration tests
# Analyze
flutter analyzeThree tiers, all using fakes (never mocks):
- Unit (repositories) —
FakeDatabaseServicewith in-memory map store - Unit (ViewModels) —
Fake{Repository}classes withseed()/reset()methods - Widget —
ChangeNotifierProvider.valuewrapping fakes, pump the screen, verify UI - Integration — Real
DatabaseServicewith an in-memory SQLite database
All fakes live in test/fakes/ and follow the naming pattern Fake{ClassName}.
Contributions are welcome! See CONTRIBUTING.md for setup instructions, code conventions, and the PR process.
Good first contributions: new preloaded adhkar, achievement ideas, translations, and open issues.
DhikrAtWork is built to do good in the world. The app is free to use, but each day before you start, you'll see a brief reminder about the humanitarian crisis in Palestine and Gaza — and an invitation to donate.
A $5/month subscription removes the daily reminder. All donation revenue goes directly to charitable relief efforts. If you cancel, the reminders return. This is how we turn everyday dhikr into real-world impact.
- Daily donation interstitial — shown once per day on app launch, dismissable with "Not now"
- $5/month subscription to remove the daily interstitial
- Payment integration (Stripe or similar)
- Subscription status synced with existing
SubscriptionServiceinterface - Pestering resumes if subscription is canceled
- Transparency page — show how much has been raised and where it goes
- Linux support
- Floating widget with multiple dhikr counters
- Cloud sync across devices
- Notification reminders
- Themes and customization
- Haptic/sound feedback options
- Widget for Windows desktop / macOS Today View
- Localization (Arabic, Urdu, Turkish, Malay, and more)
| Framework | Flutter (Windows + macOS desktop) |
| State | Provider + ChangeNotifier |
| Database | SQLite via sqflite_common_ffi |
| Charts | fl_chart |
| Window | window_manager |
| Hotkeys | hotkey_manager |
| Tray | tray_manager |
| Updates | auto_updater (Sparkle) |
MIT License — see LICENSE for details.
SubhanAllahi wa bihamdihi, SubhanAllahil Azeem


