How liban-ahmed/taqwa works
Taqwa is an iOS Islamic-practice companion centered on location-based prayer times and reminders, with learning progress and Qibla direction as substantial companion features. The shown startup path requests notification permission and schedules prayer alerts; the prayer screen obtains location, calculates daily times, and exposes status and notification choices. Learning adds lessons, quizzes, progress, analytics, achievements, and local/cloud-sync abstraction. Several feature relationships are evidenced only by the source index; dashed links identify major but unverified UI paths rather than asserting source-level calls.
Main entry points: PrayerTimesViewModel.swift Prayer times state · LearnView.swift Learning hub · NotificationService.swift Prayer reminders · TrackerView.swift Prayer tracker
Components 34
App shell
- App startup
Taqwa App/App/AppDelegate.swift - Root view
Taqwa App/App/ContentView.swift - Loading screen
Taqwa App/Views/LoadingView.swift - Home dashboard
Taqwa App/Views/HomeView.swift - Bottom navigation
Taqwa App/Core/Navigation/BottomNavigationBarView.swift - Settings
Taqwa App/Features/Settings/Views/SettingsView.swift
Prayer and reminders
- Prayer screen
Taqwa App/Features/Prayer/Views/PrayerTimesView.swift - Prayer list
Taqwa App/Features/Prayer/Views/PrayerTimesListView.swift - Prayer times state
Taqwa App/Features/Prayer/ViewModels/PrayerTimesViewModel.swift - Prayer time records
Taqwa App/Features/Prayer/Models/PrayerTimesModel.swift - Location service
Taqwa App/Core/Services/LocationService.swift - Prayer calculations
Taqwa App/Core/Services/PrayerCalculationService.swift - Prayer reminders
Taqwa App/Core/Services/NotificationService.swift - Notification permissions
Taqwa App/Core/Utilities/NotificationPermissionManager.swift - Alert preferences
Taqwa App/Core/Utilities/NotificationOption.swift - Prayer tracker
Taqwa App/Views/TrackerView.swift - Date selector
Taqwa App/Views/DateSelectorView.swift - Prayer trends
Taqwa App/Views/TrendView.swift
Islamic learning
- Learning hub
Taqwa App/Features/Learn/Views/Main/LearnView.swift - Lessons
Taqwa App/Features/Learn/Views/LessonView.swift - Quizzes
Taqwa App/Features/Learn/Views/QuizView.swift - Learning progress
Taqwa App/Features/Learn/ViewModels/LearningProgressManager.swift - Learning data
Taqwa App/Core/Services/LearningDataManger.swift - Quiz analytics
Taqwa App/Features/Learn/Views/QuizAnalyticsView.swift - Achievement manager
Taqwa App/Features/Learn/ViewModels/AchievementManager.swift - Achievement display
Taqwa App/Features/Learn/Views/AchievementView.swift - Achievement records
Taqwa App/Features/Learn/Models/Achievement.swift - Progress sync
Taqwa App/Features/Learn/Models/CloudSyncManager.swift
Qibla direction
- Qibla compass
Taqwa App/Features/Qibla/Views/QiblaView.swift - Qibla direction state
Taqwa App/Features/Qibla/ViewModels/QiblaDirectionViewModel.swift - Qibla direction model
Taqwa App/Features/Qibla/Models/QiblaDirectionModel.swift
Other components
- App user
- Device storage
- iOS notifications
Connections 43
- App user → App startup: opens app
Taqwa App/App/AppDelegate.swift - App startup → Notification permissions: requests access
Taqwa App/App/AppDelegate.swift - App startup → Prayer reminders: schedules alerts
Taqwa App/App/AppDelegate.swift - App startup → iOS notifications: sets delegate
Taqwa App/App/AppDelegate.swift - Root view → Loading screen: wraps content
Taqwa App/App/ContentView.swift - Root view → Prayer screen: shows screen
Taqwa App/App/ContentView.swift - App user → Bottom navigation: selects feature
- Bottom navigation → Home dashboard: opens dashboard
- Prayer screen → Prayer times state: presents state
- Prayer screen → Prayer list: shows times
- Prayer times state → Location service: requests location
Taqwa App/Features/Prayer/ViewModels/PrayerTimesViewModel.swift - Prayer times state → Prayer calculations: calculates times
Taqwa App/Features/Prayer/ViewModels/PrayerTimesViewModel.swift - Prayer calculations → Prayer time records: creates times
Taqwa App/Core/Services/PrayerCalculationService.swift - Prayer times state → Prayer time records: loads statuses
- Prayer list → Prayer times state: reads state
Taqwa App/Features/Prayer/Views/PrayerTimesListView.swift - Prayer list → Alert preferences: offers choices
Taqwa App/Features/Prayer/Views/PrayerTimesListView.swift - Prayer times state → Prayer reminders: schedules reminders
Taqwa App/Features/Prayer/ViewModels/PrayerTimesViewModel.swift - Prayer reminders → Prayer calculations: calculates alerts
Taqwa App/Core/Services/NotificationService.swift - Prayer reminders → Notification permissions: requests access
Taqwa App/Core/Services/NotificationService.swift - Prayer reminders → Alert preferences: uses preferences
Taqwa App/Core/Services/NotificationService.swift - Prayer reminders → iOS notifications: registers requests
Taqwa App/Core/Services/NotificationService.swift - App user → Prayer tracker: tracks prayers
- Prayer tracker → Date selector: selects date
Taqwa App/Views/TrackerView.swift - Prayer tracker → Prayer list: shows records
Taqwa App/Views/TrackerView.swift - Prayer tracker → Prayer times state: reads times
Taqwa App/Views/TrackerView.swift - Prayer tracker → Prayer trends: shows trends
Taqwa App/Views/TrackerView.swift - App user → Learning hub: opens learning
- Learning hub → Learning progress: reads progress
Taqwa App/Features/Learn/Views/Main/LearnView.swift - Learning hub → Quiz analytics: shows analytics
Taqwa App/Features/Learn/Views/Main/LearnView.swift - Learning hub → Achievement manager: loads achievements
Taqwa App/Features/Learn/Views/Main/LearnView.swift - Learning hub → Lessons: opens lesson
- Learning hub → Quizzes: opens quiz
- Quizzes → Learning progress: saves quiz progress
Taqwa App/Features/Learn/Views/QuizView.swift - Learning progress → Achievement manager: checks achievements
Taqwa App/Features/Learn/ViewModels/LearningProgressManager.swift - Achievement manager → Achievement records: manages records
Taqwa App/Features/Learn/ViewModels/AchievementManager.swift - Achievement display → Achievement manager: reads achievements
Taqwa App/Features/Learn/Views/AchievementView.swift - Learning progress → Progress sync: syncs progress
Taqwa App/Features/Learn/ViewModels/LearningProgressManager.swift - Learning progress → Device storage: stores progress
Taqwa App/Features/Learn/ViewModels/LearningProgressManager.swift - Progress sync → Device storage: caches locally
Taqwa App/Features/Learn/Models/CloudSyncManager.swift - App user → Qibla compass: opens compass
- Qibla compass → Qibla direction state: reads direction
Taqwa App/Features/Qibla/Views/QiblaView.swift - Qibla direction state → Qibla direction model: uses direction model
- App user → Settings: changes settings