Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Prayaholic

A gentle, all-in-one prayer companion for iPhone and iPad.

iOS 18.6+ SwiftUI SwiftData

Prayaholic brings daily prayer essentials into one warm, focused iOS experience. It uses the device's location to show accurate prayer times, guides the user toward the Qibla, sends configurable reminders, keeps a private prayer-completion history, and provides illustrated, step-by-step salah guidance.

Screenshots

Prayer times Qibla Tracker Prayer guide
Location-aware prayer times and sun path Qibla compass pointing toward Makkah Daily prayer checklist and seven-day trend Illustrated step-by-step prayer guide

Features

Prayer times

  • Location- and timezone-aware times for Fajr, Sunrise, Dhuhr, Asr, Maghrib, and Isha
  • A live current-prayer header and countdown to the next prayer
  • A visual sun path showing prayer markers and the current point in the day
  • Day-by-day navigation with both Gregorian and Umm al-Qura Hijri dates
  • Automatic fallback to Makkah when a device location cannot be obtained

Notifications and reminders

  • A notification toggle for each of the five obligatory prayers
  • Optional reminders 5, 10, or 15 minutes before prayer time
  • Local notification scheduling for today and tomorrow
  • Preferences persist between launches using AppStorage

Qibla compass

  • Calculates the great-circle bearing from the user's position to the Kaaba
  • Uses live compass heading to provide left/right alignment guidance
  • Haptic ticks while turning and a stronger confirmation pattern on alignment
  • Built-in compass calibration tips

Compass accuracy depends on the device's sensors and surrounding magnetic interference. Test Qibla behavior on physical hardware for the best result.

Prayer tracker

  • A heart-based checklist for the five daily obligatory prayers
  • Local history stored on-device with SwiftData
  • Date navigation and an interactive seven-day completion view
  • A celebratory state when all five prayers are marked complete

Illustrated prayer guide

  • Separate guidance for Fajr, Dhuhr, Asr, Maghrib, and Isha
  • Prayer-specific sequences based on the required number of rak'ahs
  • Swipeable illustrated steps for standing, bowing, prostration, sitting, Tashahhud, and Taslim
  • Included transliterations and short recitations for each position

How it works

Prayaholic is built entirely with Apple frameworks and has no third-party package dependencies.

Area Implementation
Interface SwiftUI with a four-tab, portrait-oriented layout
Prayer data Moonsighting.com yearly prayer-time API with an in-memory response cache and backup endpoint
Location Core Location and reverse geocoding
Qibla Great-circle bearing calculation, device heading, and Core Haptics
Persistence SwiftData for tracked prayers and AppStorage for reminder preferences
Notifications UserNotifications with per-prayer local scheduling

The app's shared LocationService and PrayerTimeAPIService instances are created at the tab-container level and passed to the screens that need them. Prayer completion records are stored in a shared SwiftData model container.

Requirements

  • macOS with Xcode 26 or later
  • iOS or iPadOS 18.6 or later
  • An Apple development team when running on a physical device
  • An internet connection for prayer-time retrieval
  • Location permission for local times and Qibla direction
  • Notification permission for prayer alerts and advance reminders

Getting started

  1. Clone this repository and enter the project directory.
  2. Open Prayaholic.xcodeproj in Xcode.
  3. Select the Prayaholic scheme.
  4. Choose an iOS simulator or a connected device.
  5. If using a physical device, select your development team under Signing & Capabilities.
  6. Build and run with ⌘R, then allow location and notification access when prompted.

You can also verify a simulator build from the command line:

xcodebuild \
  -project Prayaholic.xcodeproj \
  -scheme Prayaholic \
  -sdk iphonesimulator \
  -destination 'platform=iOS Simulator,name=iPhone 17' \
  CODE_SIGNING_ALLOWED=NO \
  build

If your simulator has a different name, replace iPhone 17 with a destination listed by:

xcodebuild -project Prayaholic.xcodeproj -scheme Prayaholic -showdestinations

Project structure

Prayaholic/
├── Models/       Prayer times, tracked prayers, guide steps, and location data
├── Services/     Location, prayer-time API, and notification services
├── Theme/        Shared colors, typography, and card styling
├── Utilities/    Small framework extensions
├── Views/
│   ├── Prayer/   Daily schedule, sun path, rows, and notification settings
│   ├── Qibla/    Compass and direction guidance
│   ├── Tracker/  Daily checklist and weekly trend
│   └── Settings/ Illustrated prayer guide
└── Assets.xcassets/

Data and privacy

  • Prayer completion history stays in the app's local SwiftData store.
  • Notification settings stay in local app preferences.
  • The selected location coordinates, timezone, and year are sent to the prayer-time provider to retrieve a schedule.
  • Location is also used by Apple's geocoder to display a city name.
  • The app does not include accounts, advertising, or analytics SDKs.

Prayer-time source

Schedules are retrieved from Moonsighting.com using the app's configured calculation method. Prayer times can vary by calculation convention and local authority; users should confirm the convention appropriate to their community.

Contributing

Issues and pull requests are welcome. For user-facing changes, please include simulator or device screenshots and verify that location-denied, offline, and notification-denied states remain usable.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages