صدقة جارية مفتوحة المصدر – شارك في الأجر وطور معنا
Open source ongoing charity – Join in the reward and develop with us
تطبيق Flutter إسلامي يعرض الأحاديث النووية مع إمكانية الاستماع إليها بصوت الشيخ أحمد النفيس، مع شرح مبسط وواجهة عصرية تدعم العربية والإنجليزية.
An Islamic Flutter app that displays the Forty Hadith Nawawi with audio narration by Sheikh Ahmad Al-Nafees, featuring explanations and a modern interface supporting Arabic and English.
- بدون إنترنت: كل المحتوى متاح offline | Offline: All content available offline
- بدون إعلانات: تجربة نقية بدون تشتيت | Ad-free: Pure experience without distractions
- مفتوح المصدر: شارك في الأجر بالتطوير | Open source: Earn reward by contributing
- خفيف وسريع: حجم صغير وأداء ممتاز | Light & fast: Small size, excellent performance
- ثنائي اللغة: دعم كامل للعربية والإنجليزية | Bilingual: Full Arabic and English support
| الميزة | الوصف | Feature | Description |
|---|---|---|---|
| النصوص | عرض الأحاديث بخط واضح | Texts | Clear hadith display |
| الشرح | شرح مبسط لكل حديث | Explanation | Simple explanation for each hadith |
| الصوت | تلاوة بصوت الشيخ أحمد النفيس | Audio | Narration by Sheikh Ahmad Al-Nafees |
| البحث | بحث فوري في الأحاديث + بحث برقم الحديث | Search | Instant search + search by hadith number |
| سجل البحث | حفظ عمليات البحث الأخيرة | Search History | Save recent searches |
| اللغات | عربي وإنجليزي | Languages | Arabic and English |
| الميزة | الوصف | Feature | Description |
|---|---|---|---|
| تشغيل/إيقاف | التحكم الكامل | Play/Pause | Full control |
| تقديم/رجوع | القفز 10 ثواني | Skip | Jump 10 seconds |
| سرعة التشغيل | 0.5x - 2x | Speed | 0.5x - 2x playback |
| شريط التقدم | التنقل في الصوت | Progress | Navigate audio |
| الميزة | الوصف | Feature | Description |
|---|---|---|---|
| الثيمات | فاتح، داكن، أزرق، بنفسجي | Themes | Light, Dark, Blue, Purple |
| حجم الخط | تكبير وتصغير | Font Size | Increase and decrease |
| RTL/LTR | دعم العربية والإنجليزية | RTL/LTR | Arabic and English support |
| متجاوب | جميع أحجام الشاشات | Responsive | All screen sizes |
| الميزة | الوصف | Feature | Description |
|---|---|---|---|
| المفضلة | حفظ الأحاديث المفضلة | Favorites | Save favorite hadiths |
| الإحصائيات | تقدم القراءة | Statistics | Reading progress |
| متابعة القراءة | آخر حديث | Continue | Last read hadith |
| المشاركة | نص أو صورة | Share | Text or image |
| القراءة المركزة | وضع غامر | Focused Reading | Immersive mode |
| التذكيرات | تذكير يومي | Reminders | Daily reminder |
| تبديل اللغة | عربي/إنجليزي | Language Switch | Arabic/English |
Flutter 3.8+ Framework
Dart 3.8+ Language
flutter_bloc State Management (Cubit)
just_audio Audio Player
shared_preferences Settings Storage
responsive_framework Responsive Design
share_plus Content Sharing
flutter_local_notifications Local Notifications
timezone Timezone Management
flutter_localizations Localization
lib/
├── main.dart # Entry point
├── core/
│ ├── constants.dart # Centralized constants
│ ├── l10n/ # Localization
│ │ └── app_localizations.dart
│ └── theme/ # Theme system
│ ├── app_theme.dart
│ ├── light_theme.dart
│ ├── dark_theme.dart
│ ├── blue_theme.dart
│ └── purple_theme.dart
├── cubit/ # State management
│ ├── audio_player_cubit.dart
│ ├── favorites_cubit.dart
│ ├── font_size_cubit.dart
│ ├── hadith_cubit.dart
│ ├── language_cubit.dart # Language management
│ ├── last_read_cubit.dart
│ ├── reading_stats_cubit.dart
│ ├── reminder_cubit.dart
│ ├── search_history_cubit.dart # Search history
│ └── theme_cubit.dart
├── models/
│ └── hadith.dart # Bilingual hadith model
├── screens/
│ ├── home_screen.dart
│ ├── hadith_details_screen.dart
│ ├── focused_reading_screen.dart
│ └── settings_screen.dart # Language & reminder settings
├── services/
│ ├── hadith_loader.dart # Loads Arabic & English
│ ├── notification_service.dart
│ ├── preferences_service.dart
│ └── share_image_service.dart
└── widgets/
├── audio_player_widget.dart
└── hadith_tile.dart
assets/
├── audio/ # MP3 files (42 files)
├── fonts/ # Cairo font
└── json/
├── 40-hadith-nawawi.json # Arabic hadiths
└── 40-hadith-nawawi-en.json # English hadiths
- Flutter 3.8 or later
- Dart 3.8 or later
# 1. Clone the project
git clone https://github.com/mahmoodhamdi/nawawi_40_hadith_app.git
# 2. Enter the directory
cd nawawi_40_hadith_app
# 3. Install dependencies
flutter pub get
# 4. Run the app
flutter run# Android APK
flutter build apk --release
# Android App Bundle
flutter build appbundle --release
# iOS
flutter build ios --release
# Web
flutter build web --release# Run tests
flutter test
# Analyze code
flutter analyze
# Format code
dart format lib/
# Update dependencies
flutter pub upgradeالتطبيق يحتوي على 270 اختبار شامل | The app contains 270 comprehensive tests:
| النوع / Type | العدد / Count | الوصف / Description |
|---|---|---|
| Unit Tests | 257 | Component unit tests |
| Integration Tests | 13 | Interface integration tests |
test/
├── cubit/
│ ├── audio_player_cubit_test.dart (25 tests)
│ ├── favorites_cubit_test.dart (27 tests)
│ ├── font_size_cubit_test.dart (20 tests)
│ ├── hadith_cubit_test.dart (12 tests)
│ ├── last_read_cubit_test.dart (14 tests)
│ ├── reading_stats_cubit_test.dart (33 tests)
│ ├── reminder_cubit_test.dart (23 tests)
│ ├── search_history_cubit_test.dart (28 tests)
│ └── theme_cubit_test.dart (15 tests)
├── models/
│ └── hadith_test.dart (16 tests)
├── services/
│ ├── preferences_service_test.dart (34 tests)
│ └── share_image_service_test.dart (19 tests)
└── widget_test.dart (10 tests)
integration_test/
└── app_test.dart (13 tests)
التطبيق يستخدم BLoC/Cubit Pattern لإدارة الحالة: The app uses BLoC/Cubit Pattern for state management:
View (Screens/Widgets)
↓ events
Cubit
↓ states
View (Screens/Widgets)
| Cubit | المسؤولية / Responsibility |
|---|---|
| HadithCubit | Load and manage hadiths |
| AudioPlayerCubit | Audio control |
| ThemeCubit | Theme management |
| FontSizeCubit | Font size |
| LastReadCubit | Last read tracking |
| FavoritesCubit | Favorites management |
| ReadingStatsCubit | Reading statistics |
| ReminderCubit | Daily reminders |
| SearchHistoryCubit | Search history management |
| LanguageCubit | Language switching (AR/EN) |
كل مساهمة = أجر صدقة جارية بإذن الله Every contribution = ongoing charity reward, God willing
- Fork the project
- Create a new Branch
git checkout -b feature/amazing-feature
- Write tests first
- Implement changes
- Ensure tests pass
flutter test flutter analyze - Commit changes
git commit -m "feat: add amazing feature" - Push to branch
git push origin feature/amazing-feature
- Open Pull Request
راجع خطة التطوير | See Development Plan
- Unit tests (270 tests)
- Improved search (debounce + Arabic normalization)
- Accessibility labels
- Error handling in data loading
- Input validation
- Favorites/bookmarks system
- Reading statistics
- Share as image
- Daily hadith reminder
- Focused reading mode
- English language support
- Search by hadith number
- Search history
- Hadith titles display
- Enhanced markdown descriptions
- French language support
- Cloud sync
- Apple Watch app
- Search performance
- Animations
- Better tablet support
- Favorites system
- Improved search
- Comprehensive tests
- Reading statistics
- Share as image
- Daily reminders
- Focused reading mode
- English language support
- Bilingual UI
- Search by hadith number
- Search history
- Hadith titles in Arabic and English
- Enhanced markdown descriptions
- Improved UI/UX
- 270 comprehensive tests
- Cloud sync
- French language
- Apple Watch app
هذا المشروع مرخص تحت رخصة MIT - راجع ملف LICENSE للتفاصيل.
This project is licensed under the MIT License - see LICENSE for details.
الغرض الأساسي من المشروع هو نشر العلم ونيل أجر الصدقة الجارية بإذن الله.
The main purpose is to spread knowledge and earn ongoing charity reward, God willing.
للتواصل والمساهمة | For contact and contribution:
- Open an Issue
- Or connect via GitHub
إذا أعجبك المشروع، لا تنسى إضافة نجمة ⭐ If you like the project, don't forget to add a star ⭐
اللهم اجعل هذا العمل خالصًا لوجهك الكريم، وارزقنا به الأجر والمغفرة
O Allah, make this work sincere for Your noble sake, and grant us reward and forgiveness