Master the Quran, one Ayah at a time
A Flutter application designed to help Muslims test and improve their Quran memorization skills through interactive audio-based testing.
- Random Verse Testing: Generate random verses from random chapters and complete them where the reciter stops
- Multiple Test Modes:
- Test by Surah (Chapter)
- Test by Juz (Part)
- Random testing across the entire Quran
- Audio Playback: High-quality audio recitation with multiple reciters
- Progress Tracking: Save and continue from your last read position
- User Guide: Interactive showcase to help new users navigate the app
- Multiple Reciters: Choose from various renowned Quran reciters
- Playback Controls: Play, pause, seek, and adjust playback speed
- Background Playback: Continue listening while using other apps
- Loop Modes: Repeat verses for better memorization
- Beautiful UI: Modern, intuitive interface with Arabic typography
- Responsive Design: Optimized for different screen sizes
- Settings Management: Customize reciter, autoplay, and other preferences
- Last Read Card: Quick access to continue from where you left off
- Flutter SDK (>=3.4.0)
- Dart SDK
- Android Studio / VS Code
- Android device or emulator (iOS support available)
-
Clone the repository
git clone https://github.com/bynalab/hafiz_test.git cd hafiz_test -
Install dependencies
flutter pub get
-
Run the app
flutter run
flutter build apk --release
# or for app bundle
flutter build appbundle --releaseflutter build ios --releaselib/
βββ data/ # Static data files
β βββ juz_list.dart # Juz (Part) definitions
β βββ reciters.dart # Available reciters
β βββ surah_list.dart # Surah (Chapter) list
βββ enum/ # Enumerations
β βββ surah_select_action.dart
βββ extension/ # Dart extensions
β βββ collection.dart
β βββ quran_extension.dart
βββ juz/ # Juz-related screens
βββ model/ # Data models
β βββ ayah.model.dart
β βββ reciter.model.dart
β βββ surah.model.dart
βββ quran/ # Quran-related functionality
βββ services/ # Business logic services
β βββ audio_services.dart
β βββ ayah.services.dart
β βββ network.services.dart
β βββ storage/ # Storage implementations
β βββ surah.services.dart
βββ surah/ # Surah-related screens
βββ util/ # Utility classes
βββ widget/ # Reusable UI components
βββ locator.dart # Dependency injection setup
βββ main.dart # App entry point
βββ main_menu.dart # Main menu screen
βββ settings_dialog.dart # Settings configuration
βββ splash_screen.dart # App splash screen
The project includes comprehensive test coverage:
# Run all tests
flutter test
# Run tests with coverage
flutter test --coverage- Unit Tests: Service layer testing with mocked dependencies
- Widget Tests: UI component testing
- Integration Tests: End-to-end user flow testing
test/services/- Service layer teststest/widget_test.dart- Widget teststest/test_helper.dart- Test utilities and mocks
- flutter: UI framework
- dio: HTTP client for API calls
- just_audio: Audio playback functionality
- shared_preferences: Local data storage
- get_it: Dependency injection
- google_fonts: Typography
- shimmer: Loading animations
- flutter_svg: SVG support
- showcaseview: User onboarding
- flutter_test: Testing framework
- mocktail: Mocking library
- flutter_lints: Code quality
- API Configuration: The app uses external APIs for Quran data and audio
- Storage: Local preferences for user settings and progress
- Audio: Background audio support with notification controls
Add screenshots of the app here
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Flutter/Dart style guidelines
- Write tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
This project is licensed under the MIT License - see the LICENSE file for details.
- Quran API: For providing Quran text and audio data
- Reciters: All the talented Quran reciters whose audio is used
- Flutter Community: For the excellent packages and support
- Open Source Contributors: For their valuable contributions
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Contact the development team
- v25.09.03+12: Current version with comprehensive testing and UI improvements
- Previous versions: See CHANGELOG for detailed history
May Allah bless this effort and make it beneficial for all Muslims seeking to memorize His words. Ameen. π€²