Murajah (Ω Ψ±Ψ§Ψ¬ΨΉΨ©) is a comprehensive application designed to help Quran students memorize and maintain their memorization through systematic review and practice.
In Arabic, "muraja'ah" means review, revision, or repetition. In the context of Quranic studies, it specifically refers to the practice of repeatedly reciting and revising previously memorized verses to prevent forgetting them.
- General meaning: Review, revisiting, or revising something
- Specific meaning in Quranic studies: The essential act of repeating and reviewing already memorized portions of the Quran to maintain them
This practice is fundamental to Quran memorization, as it helps prevent memorization from deteriorating over time.
Memorizing the Quran is a profound spiritual journey, but maintenance is equally critical. Murajah addresses this by:
- Preventing Forgetting: Regular revision ensures memorization stays fresh and long-term
- Tracking Progress: Monitor what you've memorized and areas needing improvement
- Building Accountability: Daily goals and statistics keep you motivated
- Identifying Weaknesses: Track mistakes to focus on challenging verses
- Structured Learning: Organized review schedules optimize retention
- Madani (QPC) Mushaf β Uthmani script with full color-coded tajweed and a legend, toggleable
- Indopak Nastaleeq β a first-class layout for the subcontinent tradition, not an afterthought
- Mushaf (scanned pages) β the real printed-page feel: single page on phones, a true 2-page spread on desktop, pinch-to-zoom throughout
- Adjustable text size, plus light / dark / sepia reading themes with full RTL support
- Word-by-word translation
- Tap-to-inspect morphology β full Arabic grammar breakdown per word
- Mistake-marking mode to flag and revisit the words you keep missing
- Inline commentary in Arabic, English, and Bengali β toggle per page without leaving the reader
- Color-coded memorized-page grid and Juz-level progress overview
- Per-page perfect-revision counters and a weakness score that surfaces pages needing review
- A page-by-page revision heatmap and a completion estimate β a projected finish date based on your pace
- One adaptive plan combining scope, pace, and new-memorization targets β not a static checklist
- Smart, weakness-aware scheduling
- A daily "Today" view with streaks (midnight reset) and full history
- Translation matching, verse continuation, and word completion
- Scoped to any surah, juz, or range, scored in real time
- 14 verse-by-verse reciters and 11 page-level reciters, with automatic fallback sourcing
- Record your own recitation and play it back for self-review
- Listen mode β continuous playback of a surah, juz, or the entire Quran
- Live β 24/7 streams from Makkah and Madinah
- Friendly, shareable URLs (
/2opens Al-Baqarah,/page/50,/mushaf/50) - A Contents browser with Surah / Juz / Page views
- A command palette (
βK/Ctrl+K) for instant quick-jump - A responsive shell β a bottom tab bar on mobile, a full navigation rail on desktop
- Installs as a real Progressive Web App on Android, iOS, and desktop
- A resumable offline download manager β size shown up front, nothing downloads silently
- An iOS-safe service worker that avoids the stale-cache issues common to WebKit PWAs
- 100% local-first β everything lives in your browser's IndexedDB; no account, no backend, nothing tracked
- Export and import your entire history as a single JSON file, anytime
- Full UI localization in English, Arabic, and Bengali
- π Web app: murajah.pages.dev
- π± Android: Get it on Google Play
- Node.js 22 or later
- npm
git clone https://github.com/wasi0013/Murajah.git
cd Murajah/app
npm install
npm run devThe dev server regenerates the Quran data chunks automatically and starts at http://localhost:5173.
cd app
npm run build # type-check + production build β dist/ (incl. the PWA service worker)
npm run preview # serve the production build locallyThe app builds to a static bundle (app/dist) that runs anywhere capable of serving static files with SPA-fallback routing (see app/public/_redirects). It's currently deployed on Cloudflare Pages with zero backend servers. Full deploy configuration lives in app/README.md.
cd app
npm install
npm run test:unit # Vitest β domain logic, stores, components
npx playwright install --with-deps chromium
npm run test:e2e # Playwright β full user flows + accessibility
npm test # bothUseful variants:
npm run test:unit:watch # unit tests, watch mode
npm run test:unit:coverage # unit test coverage report
npm run size # bundle-size budget gateEvery pull request runs type-checking, the full unit + e2e suite, a bundle-size gate, and a Lighthouse CI performance budget via GitHub Actions.
- All progress β memorization, mistakes, plans, streaks, recordings β is stored locally in IndexedDB. Nothing is ever sent to a server.
- Data is per-browser and per-device; use Settings β Export/Import to back it up or move it between devices.
Murajah/
βββ app/ # The application (Vue 3 + Vite + TypeScript)
β βββ src/
β β βββ core/ # Framework-agnostic domain logic (memorization, storage, audio, i18nβ¦)
β β βββ stores/ # Pinia stores
β β βββ components/ # Shared UI primitives
β β βββ features/ # One folder per feature β reader, quiz, audio, progress, settingsβ¦
β β βββ router/ # Code-split routes
β β βββ workers/ # Off-main-thread data parsing
β β βββ sw/ # Service worker (Workbox via vite-plugin-pwa)
β βββ tests/ # Vitest unit tests + Playwright e2e specs
β βββ public/ # Static assets, PWA icons, SPA redirects
βββ data-pipeline/ # Build-time scripts: chunk & compress Quran/tafsir/morphology data, fonts, images
βββ plans/ # Design & implementation planning docs
- Framework: Vue 3 (
<script setup>+ TypeScript), Vite - State: Pinia
- Routing: Vue Router, fully code-split
- Styling: Tailwind CSS v4, compiled at build time β no runtime JIT
- Icons: Lucide, tree-shaken SVGs
- Offline: vite-plugin-pwa (Workbox) + IndexedDB
- Testing: Vitest (unit), Playwright (e2e + accessibility via axe-core)
- Performance gates: size-limit (bundle budgets) + Lighthouse CI, enforced on every PR
- Hosting: Cloudflare Pages β static, no backend servers
| Key | Action |
|---|---|
β / β |
Previous / next page (mirrors reading direction) |
Page Up / Page Down |
Previous / next page |
βK / Ctrl+K |
Open quick-jump β surah, ayah, page, or juz |
Found a bug or have a feature request?
- Open an issue on GitHub
- Submit a pull request with improvements
- Share your feedback
This project is licensed under GNU GPL v3.0. See LICENSE for full terms.
- Check existing issues on GitHub
- Open a new issue with a clear description, including your browser and device
- Or join the Discord community
- Quran text, tafsir, and morphology data from the Quranic Universal Library (QUL)
- Tajweed-colored font from quran.com
Start your memorization journey with Murajah today β make review easy, systematic, and rewarding. πβ¨ May Allah accept your efforts in memorizing and preserve His Words in your heart. π€
May Allah bless all the JSON resource providers and the quran.com team.

