A modern web application for Quran memorization with Qalun recitation by Mahmoud Khalil Al-Husari. Built with Next.js, TypeScript, and Tailwind CSS.
- 📖 Complete Quran Text: All 604 pages in Qalun recitation with authentic KFGQPC Uthmanic font
- 🎧 Audio Recitation: Complete Qalun recitation by Mahmoud Khalil Al-Husari
- 📄 Mushaf Layout: Page-by-page display matching physical Quran layout (15 lines per page)
- 🔍 Easy Navigation: Browse by Surah, Page, or Juz with quick search
- 🔖 Bookmarks: Save your favorite pages for quick access
- 🎤 Memorization Mode: Hide ayahs and test your memorization
- Play/pause controls
- Volume adjustment
- Playback speed control (0.5x - 1.5x)
- Ayah-by-ayah repeat
- Section repeat for specific ranges
- Progress bar with seek functionality
- By Surah: Browse all 114 surahs with ayah counts
- By Page: Direct page access (1-604)
- By Bookmarks: Quick access to saved pages
- Search: Find surahs by Arabic or English name
- Local storage for bookmarks and preferences
- IndexedDB for voice recordings
- Cached Quran data for offline access
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Font: KFGQPC Qalun Uthmanic Script
- Data: KFGQPC Quran Data (JSON)
- Audio: Archive.org (Al-Husari Qalun MP3s)
- Node.js 18+ and npm
- Modern web browser with audio support
-
Install dependencies:
npm install
-
Download additional audio files (optional):
Currently, only the first 3 surahs are included. To download all 114 surahs:
cd public/audio # Download all surahs (596 MB total) for i in {1..114}; do curl -L -o $(printf "%03d.mp3" $i) \ https://archive.org/download/husari_qalun/$(printf "%03d.mp3" $i) done
Or download the complete ZIP:
wget -O husari_qalun.zip "https://archive.org/compress/husari_qalun/formats=VBR%20MP3" unzip husari_qalun.zip -d public/audio/ -
Run the development server:
npm run dev
-
Open your browser: Navigate to http://localhost:3000
quran-memorization-app/
├── src/
│ ├── app/
│ │ ├── fonts.ts # Font configuration
│ │ ├── globals.css # Global styles
│ │ ├── layout.tsx # Root layout
│ │ └── page.tsx # Main page
│ ├── components/
│ │ ├── QuranPageViewer.tsx # Page display component
│ │ ├── AudioPlayer.tsx # Audio playback controls
│ │ └── NavigationSidebar.tsx # Navigation menu
│ ├── services/
│ │ ├── quranDataService.ts # Quran text data management
│ │ ├── audioService.ts # Audio playback logic
│ │ ├── recordingService.ts # Voice recording for memorization
│ │ └── storageService.ts # Local storage & IndexedDB
│ ├── types/
│ │ └── quran.ts # TypeScript type definitions
│ └── data/
│ ├── quran/
│ │ └── QaloonData_v10.json # Complete Quran text
│ └── layout/
│ └── quran-info.json # Metadata
├── public/
│ ├── audio/ # MP3 files (001.mp3 - 114.mp3)
│ └── fonts/ # Qalun fonts (TTF, WOFF2)
└── package.json
- Open the app and you'll see Page 1 (Al-Fatiha)
- Navigate pages using Previous/Next buttons
- Open menu to browse by Surah, Page, or Bookmarks
- Click Play to start recitation of current surah
- Adjust volume using the slider
- Change speed by opening Settings and selecting 0.5x - 1.5x
- Seek by dragging the progress bar
- Click the ☆ Bookmark button to save current page
- Access saved bookmarks from the Navigation Menu → Bookmarks tab
- Click ★ Bookmark again to remove bookmark
- Click 📖 Reading Mode to switch to 🎤 Memorization Mode
- Ayahs will be hidden for self-testing
- Click on hidden text to reveal specific ayahs
- (Future: Record your recitation and compare)
- Source: KFGQPC GitHub Repository
- Format: JSON (QaloonData_v10.json)
- License: Open source
- Features: Complete Quran with page/line metadata
- Source: Archive.org - husari_qalun
- Reciter: Mahmoud Khalil Al-Husari
- Riwayah: Qalun
- Format: VBR MP3 (114 files, one per surah)
- Size: 596 MB total
- Source: KFGQPC Quran Printing Complex
- Font: Qalun v10 (qaloon.10.woff2, qaloon.10.ttf)
- Script: Uthmanic Arabic Script
- Source: fawazahmed0/quran-api
- Data: Juz, Hizb, Surah info, Page mappings
# Development server
npm run dev
# Production build
npm run build
# Start production server
npm start
# Lint code
npm run lintThe codebase is structured for easy extension:
- Services: Add new services in
src/services/ - Components: Add UI components in
src/components/ - Types: Extend types in
src/types/quran.ts - Styles: Modify
src/app/globals.cssfor global styles
Planned features for future releases:
- Voice recording and playback comparison
- Tajweed highlighting
- Translation display (multiple languages)
- Tafsir (commentary) integration
- Progress tracking and statistics
- Word-by-word display
- Offline PWA support
- Mobile app (React Native)
This project uses open-source Quran data and audio:
- Quran Text: KFGQPC data (open source)
- Audio: Archive.org (free distribution)
- Fonts: KFGQPC fonts (free for personal use)
The app code itself is provided as-is for educational purposes.
- King Fahd Glorious Quran Printing Complex (KFGQPC) for the authentic Qalun text and fonts
- Mahmoud Khalil Al-Husari for the beautiful Qalun recitation
- Archive.org for hosting the audio files
- thetruetruth for the structured Quran data repository
- fawazahmed0 for the Quran metadata API
May Allah accept this effort and make it a means of benefit for those seeking to memorize His Book. Ameen. 🤲