Skip to content

About

A macOS menu bar application that provides Islamic prayer time reminders with accurate calculations, native notifications, and a beautiful Islamic-themed interface.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

Shalat Reminder

A macOS menu bar application that provides Islamic prayer time reminders with accurate calculations, native notifications, and a beautiful Islamic-themed interface.

Platform Architecture macOS Swift SwiftUI License

Features

  • 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.

Screenshots

🕌 Home Screen

Home Screen

📅 Hijri Calendar

Hijri Calendar

📍 Nearby Mosques

Nearby Mosque

⚙️ Settings

Settings

🌍 Multi-Language Support

Multi-Language

Requirements

  • macOS 13.0 (Ventura) or later
  • Apple Silicon (arm64)

Installation

Download (Pre-built)

  1. Go to the Releases page
  2. Download Shalat-Reminder-v1.0.0.zip from the latest release
  3. Unzip and move Shalat Reminder.app to your Applications folder
  4. 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.

Permissions

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.

Building

This project uses Swift Package Manager (no Xcode project required).

Quick Build (Debug)

./build.sh

Release Build

./build.sh release

This will compile the project and create a macOS app bundle at build/Shalat Reminder.app.

Manual Build

# Debug
swift build

# Release
swift build -c release

Run

open "build/Shalat Reminder.app"

Project Structure

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

Architecture

The app uses a singleton manager pattern with SwiftUI and Combine:

  • 6 core managers (PrayerTimeManager, LocationManager, NotificationManager, AppPreferences, MosqueManager, LocalizationManager) are singletons conforming to ObservableObject.
  • Managers are injected into the SwiftUI view hierarchy as @EnvironmentObjects from the AppDelegate.
  • 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 NSStatusItem and NSPopover via AppKit interop for the menu bar experience, with all UI built in SwiftUI.

Dependencies

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.

Permissions

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.

License

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.

About

A macOS menu bar application that provides Islamic prayer time reminders with accurate calculations, native notifications, and a beautiful Islamic-themed interface.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages