Developing a Mobile App for Religious Organizations
App for religious org has specific requirements absent in corporate apps: multilingual with RTL support (Arabic, Hebrew), accurate sacred text display with proper diacritical marks, worship schedule accounting for lunar calendar, media library with sermons and live streaming.
Texts and Typography
Sacred texts—not regular content. Quran requires Arabic script with proper tashkeel (vowel marks), Torah—Hebrew with nikudot. RTL text on mobile: iOS UIKit with NSAttributedString + NSParagraphStyle, directional via NSMutableParagraphStyle.baseWritingDirection = .rightToLeft. SwiftUI—environment(\.layoutDirection, .rightToLeft).
Android: android:textDirection="rtl" or TextView.textDirection = TEXT_DIRECTION_RTL. For correct complex script rendering—HarfBuzz (built into Android 5+) and ICU. Problem with Arabic ligatures on old Android: pre-5.0 HarfBuzz missing contextual letter forms. Target minSdkVersion 21+ solves most.
Fonts: Arabic—Amiri, Scheherazade New (SIL). Hebrew—Frank Rühl Libre, Miriam. Bundled fonts ensure correct rendering on all devices.
Schedule and Islamic/Hebrew Calendar
Prayer time schedule—calculated by geolocation via astronomical algorithms (Muslim World League, ISNA, Karachi, MWL methods). Libraries: Adhan (Swift/Kotlin port—open source, good accuracy). Client-side without network—critical for offline.
Islamic (Hijri) calendar: iOS Calendar(identifier: .islamicCivil) or .islamicTabular. Android java.util.Calendar doesn't support directly—use Android android.icu.util.IslamicCalendar (API 24+) or library. Date conversion—frequent off-by-one source at boundaries.
Hebrew calendar: iOS Calendar(identifier: .hebrew). Rosh Hashana, Yom Kippur, Pesach—calculated relative to lunisolar cycle. KosherJava (Android)—most complete for Hebrew dates and candle-lighting times.
Media Library: Sermons and Lectures
Sermons—audio/video like podcast-player: background playback, Lock Screen controls, variable speed, offline download. iOS: AVPlayer + AVAudioSession.category = .playback. Android: MediaSessionCompat + ExoPlayer via MediaBrowserServiceCompat for foreground service.
Sermon catalog: series, tags (topic, speaker, date), full-text search. Elasticsearch with Arabic morphology—arabic analyzer, Snowball stemmer for Arabic (in Elasticsearch). Russian communities—russian analyzer.
Live worship streaming. RTMP (OBS / mobile encoder) → HLS via nginx-rtmp or AWS IVS → playback via AVPlayer (iOS) / ExoPlayer (Android). Small communities—YouTube Live embed in WKWebView. Self-hosted—Ant Media Server.
Donations and Financial
Donations via Apple Pay / Google Pay: PKPaymentAuthorizationViewController (iOS), PaymentRequest API via Android Pay. Acquiring: local payment processors. Stripe for international.
Important: Apple takes 30% from In-App Purchases, but direct SDKs (Apple Pay to external acquirer) don't fall under IAP fees when following App Store guidelines 3.1.1.
Scheduled Notifications
Prayer reminders, worship, fasting—local notifications, no push. Work offline and serverless. iOS: UNCalendarNotificationTrigger with DateComponents—schedule week ahead on settings/location change. Android: AlarmManager.setExact (API 31+ requires SCHEDULE_EXACT_ALARM permission) or WorkManager.
Limit: iOS allows max 64 local notifications at once. Daily 5 prayers for 10 days = 50—fits. On schedule recalc (user moved)—cancel all, plan new.
Timelines
1–2 weeks—basic app with schedule and media library. 1–3 months—full platform with live streaming, donations, RTL support. Cost calculated individually after analyzing requirements.







