A humble companion for your journey with the Holy Quran. Wird Reminder is a cross-platform application (Chrome, Firefox, PWA, and Android) designed to help you maintain a consistent daily or weekly Quran reading habit through gentle reminders and a beautiful reading experience.
In our busy lives, consistency can be a challenge. This project was born out of a simple need: a tool that stays out of the way but reminds us of our most important daily goal—connecting with the Words of Allah.
We've tried to make it as simple, privacy-focused, and beautiful as possible. It is completely free, open-source, and contains no advertisements.
- Cross-Platform: Available as a Browser Extension (Chrome/Firefox), a Progressive Web App (PWA), and a Native Android App.
- Personalized Reminders: Set goals for specific Surahs, Ayah ranges, or an entire Juz.
- Smart Scheduling: Choose between daily reminders or weekly sessions (like Surah Al-Kahf on Fridays).
- Beautiful Reader: A focused, Mushaf-style reading view using the traditional Uthmani script.
- Progress Tracking: A simple calendar view to visualize your consistency and history.
- Smart Bookmarking: Remembers exactly where you left off in each wird across your sessions.
- Privacy-First: All your data—reminders, bookmarks, and history—stays strictly on your local machine.
- Offline Capable: Works without an internet connection once the Quran text is cached.
This project uses a "Write Once, Sync Everywhere" architecture to maintain a unified codebase across all platforms.
The Single Source of Truth. All business logic, CSS design systems, Quranic data, and UI components live here.
/core/js/adapter: Unified abstractions for Storage, Notifications, and Environment detection./core/js/logic: Core reminder and history management./core/js/renderer: The Mushaf-style rendering engine.
/chrome&/firefox: Extension shells using Manifest V3/V2./www: The web host for the PWA and Capacitor./android: The native Android wrapper powered by Capacitor.
To ensure changes are propagated correctly across all platforms, follow this workflow:
git clone https://github.com/hadealahmad/WirdReminder.git
npm installNEVER edit files inside chrome/src/core, firefox/src/core, or www/core directly. These are generated copies. Always edit the files in the root /core directory.
After making changes to the core or assets, run:
npm run syncThis script propagates your core changes to all platform-specific source directories.
To generate production-ready packages for all platforms:
npm run buildThis will create a /build directory containing:
- Chrome & Firefox Extension Zips
- Android APK (Debug)
- Android AAB (Release)
- Run
npm run sync. - Chrome: Load
chrome/(unpacked) viachrome://extensions. - Firefox: Load
firefox/manifest.jsonviaabout:debugging.
- Run
npm run sync. - Serve the
www/directory using any local server (e.g.,npx serve www).
- Ensure
ANDROID_HOMEis set. - Run:
npm run android:refreshThis will sync the latest web code into the Android project and launch it on your connected device/emulator.
We use scripts/version-sync.js. To update the project version:
- Update
"version"in the rootpackage.json. - Run
npm run build(or justnpm version <new_version>). The script will automatically update all manifest files (chrome,firefox,www,capacitor.config).
When adding new platform-specific features (like a new storage engine), update the adapters in core/js/adapter/. This ensures the logic remains identical while the implementation adapts to the environment.
- Android: Requires JDK 17, 21, or 25.
- Build Tools: Uses Gradle 9.2.1 and AGP 8.13.0.
We welcome any humble contributions to this project. Whether it's a bug fix, a new feature, or an improvement to the Arabic translations, feel free to open a Pull Request. Always ensure your changes are made in the /core directory and that you've run npm run sync before submitting.