A macOS menu bar application that provides Islamic prayer time reminders with accurate calculations, native notifications, and a beautiful Islamic-themed interface.
- Menu Bar Countdown -- Lives in the macOS menu bar with a mosque icon and optional countdown to the next prayer, updated every 30 seconds.
- Today's Prayer Times -- Displays all 6 prayer times (Fajr, Sunrise, Dhuhr, Asr, Maghrib, Isha) with a live second-by-second countdown to the next prayer.
- Monthly Timetable -- Full month view showing prayer times for every day, with the current day highlighted and Hijri date annotations.
- Hijri Date Display -- Shows the current Islamic (Umm al-Qura) calendar date alongside the Gregorian date.
- Nearby Mosques -- Finds mosques within a 10km radius using MapKit, sorted by distance, with tap-to-open-in-Maps navigation.
- Native Notifications -- Per-prayer configurable notifications with optional adhan sound playback.
- Flexible Location -- Auto-detect via CoreLocation or manual city search with geocoding.
- 13 Calculation Methods -- Muslim World League, ISNA, Egyptian, Karachi, Umm Al-Qura, Dubai, Qatar, Kuwait, Moonsighting Committee, Singapore, Tehran, Turkey, and more.
- Madhab Selection -- Shafi and Hanafi options for Asr calculation.
- High Latitude Rules -- Three high-latitude calculation rules for regions with extreme day/night lengths.
- Multi-Language -- Built-in support for English, Bahasa Indonesia, Bahasa Melayu, and Japanese.
- Dark/Light Mode -- Islamic-themed gradient backgrounds that adapt to the system color scheme.
- macOS 13.0 (Ventura) or later
- Apple Silicon (arm64)
- Go to the Releases page
- Download
Shalat-Reminder-v1.0.0.zipfrom the latest release - Unzip and move
Shalat Reminder.appto your Applications folder - Open the app — it will appear in your menu bar
Note: Since the app is not notarized, macOS may show a security warning on first launch. Right-click the app and select Open, or go to System Settings → Privacy & Security and click Allow Anyway.
On first launch, the app will request:
- Location access — For accurate prayer time calculations
- Notification permission — For prayer time reminders
You can change these anytime in System Settings.
This project uses Swift Package Manager (no Xcode project required).
./build.sh./build.sh releaseThis will compile the project and create a macOS app bundle at build/Shalat Reminder.app.
# Debug
swift build
# Release
swift build -c releaseopen "build/Shalat Reminder.app"ShalatReminder/
├── Package.swift # SPM manifest
├── build.sh # Build & bundle script (supports debug/release)
├── AppIcon.icns # App icon
└── ShalatReminder/
├── ShalatReminderApp.swift # App entry point & AppDelegate
├── Info.plist # App configuration
├── ShalatReminder.entitlements # Sandbox & permissions
├── Assets.xcassets/ # Colors & assets
├── Resources/ # Audio resources (adhan.caf)
├── Models/
│ ├── PrayerTimeManager.swift # Prayer time calculation & countdown
│ ├── LocationManager.swift # Location services & geocoding
│ ├── NotificationManager.swift# Notification scheduling & adhan
│ ├── Preferences.swift # User settings & calculation enums
│ ├── Localization.swift # Multi-language support (4 languages)
│ ├── MosqueManager.swift # Nearby mosque search via MapKit
│ └── HijriDateHelper.swift # Islamic calendar date formatting
└── Views/
├── MenuBarView.swift # Main popover with tab navigation
├── PrayerTimesListView.swift# Today tab with prayer list
├── CountdownView.swift # Live countdown display
├── MonthlyTimetableView.swift# Monthly prayer timetable
├── NearbyMosquesView.swift # Nearby mosques list
├── SettingsView.swift # Settings panel
└── Components/
├── PrayerRowView.swift # Individual prayer row
├── MosqueIcon.swift # Custom mosque shape for menu bar
├── HijriDateView.swift # Hijri/Gregorian date display
└── GradientBackground.swift # Themed gradients & card styles
The app uses a singleton manager pattern with SwiftUI and Combine:
- 6 core managers (
PrayerTimeManager,LocationManager,NotificationManager,AppPreferences,MosqueManager,LocalizationManager) are singletons conforming toObservableObject. - Managers are injected into the SwiftUI view hierarchy as
@EnvironmentObjects from theAppDelegate. - Reactive bindings via Combine keep everything synchronized -- changing location or calculation settings automatically recalculates prayer times, reschedules notifications, and updates the menu bar.
- The app uses
NSStatusItemandNSPopovervia AppKit interop for the menu bar experience, with all UI built in SwiftUI.
| Dependency | Version | Purpose |
|---|---|---|
| adhan-swift | 1.4.0 | Islamic prayer time calculation by Batoul Apps |
All other functionality uses Apple system frameworks: SwiftUI, AppKit, CoreLocation, MapKit, UserNotifications, AVFoundation, and Combine.
The app requests the following permissions (configured in entitlements):
- Location -- To calculate prayer times based on your geographic position
- Notifications -- To deliver prayer time reminders
- Network -- To search for nearby mosques via MapKit
The app runs in a sandboxed environment and stores preferences locally via UserDefaults.
The MIT License (MIT)
Copyright (c) 2026 Shalat Reminder
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




