Your personal Islamic companion β track prayers, read Qurβan, and sync across devices.
SalahSync is an Android app built around a powerful single-file WebView architecture. It combines a beautiful HTML/CSS/JS front-end with Firebase for cross-device cloud sync, and wraps it all in a native Android shell.
| Feature | Description |
|---|---|
| π Prayer Tracker | Mark each of the 5 daily prayers as done with beautiful toggle switches |
| π Salah Timetable | Full monthly prayer times table with todayβs row highlighted |
| π Qurβan Reader | Browse all 114 surahs, read full Arabic text with English translation |
| π€² Duas Collection | Searchable collection of duas with Arabic text and transliteration |
| π How to Pray Namaz | Step-by-step prayer guide |
| βοΈ Cloud Sync | Real-time Firestore sync β data stays identical across all your devices |
| π Account System | Email/Password and Google Sign-In via Firebase Auth |
| π¨ 22 Premium Themes | Islamic, Luxury, Nature, and Tech themed color palettes |
| π Dark / Light Mode | Toggle between dark and light modes |
| π± Android Native | Packaged as a native Android app with back-navigation support |
The app uses a tab-based layout with the following main views:
| Layer | Technology |
|---|---|
| Android Shell | Kotlin, Jetpack Compose, WebView |
| Front-end | HTML5, Vanilla CSS, Vanilla JavaScript |
| Authentication | Firebase Auth v8 (Email/Password + Google Sign-In) |
| Database | Cloud Firestore (real-time listener) |
| Fonts | Google Fonts β Lexend, Noto Naskh Arabic, Bangers, Teko |
| Icons | Font Awesome 6 |
| Min SDK | Android 7.0 (API 24) |
| Target SDK | Android 17 (API 37) |
| Version | 2.0.0 |
SalahSyncApp/
βββ app/
β βββ src/main/
β β βββ assets/
β β β βββ SalahSync.html # Main app (entire front-end in one file)
β β β βββ login.html # Login / Register / Password Reset page
β β βββ java/com/example/salahsync/
β β β βββ MainActivity.kt # WebView host + AndroidBridge JS interface
β β β βββ data/
β β β β βββ PrayerDatabase.kt # Hardcoded prayer times data
β β β β βββ FirestoreRepository.kt # Firestore read/write helpers
β β β β βββ SurahRepository.kt # Quran surah data
β β β β βββ TrackingData.kt # Prayer tracking data model
β β β β βββ DataRepository.kt # General data access
β β β β βββ TimeUtils.kt # Date/time helpers
β β β βββ ui/
β β β β βββ main/
β β β β β βββ MainScreen.kt # Compose main screen
β β β β β βββ MainScreenViewModel.kt
β β β β βββ tabs/
β β β β βββ DashboardTab.kt # Prayer stats dashboard
β β β β βββ DataTab.kt # Salah timetable table
β β β β βββ LiveTab.kt # Today's prayer checklist
β β β β βββ SurahTab.kt # Quran surah browser
β β β β βββ ViewModels...
β β β βββ theme/ # Compose theme definitions
β β βββ res/ # Android resources (icons, strings)
β β βββ AndroidManifest.xml
β βββ google-services.json # Firebase project config
β βββ build.gradle.kts
βββ build.gradle.kts
βββ settings.gradle.kts
βββ gradle.properties
The app uses Firebase for authentication and cloud sync.
Firebase services used:
Firestore data structure:
elite_users/
βββ {userId}/
βββ trackingData: { "2024-01-15": { fajr: true, dhuhr: false, ... }, ... }
β οΈ If you fork this project, replace
google-services.jsonand thefirebaseConfigobject inside bothSalahSync.htmlandlogin.htmlwith your own Firebase project credentials.
git clone https://github.com/yourusername/SalahSync.git
cd SalahSync/SalahSyncApp
SalahSyncApp folderShift + F10./gradlew assembleRelease
The APK will be output to app/build/outputs/apk/release/.
App Launch
β
βΌ
SalahSync.html (main app)
β
ββ User not signed in β taps "Sign In / Sign Up"
β β
β ββ Android: AndroidBridge.openLogin() β loads login.html in WebView
β ββ Desktop: window.location.href = 'login.html'
β
βΌ
login.html
ββ Email/Password Sign In
ββ Email/Password Register
ββ Google Sign-In (popup on desktop)
ββ Forgot Password (Firebase reset email)
β
βΌ
On success β AndroidBridge.onLoginSuccess() / window.location.replace('SalahSync.html')
β
βΌ
Back to SalahSync.html (signed in, cloud sync active)
The AndroidBridge Kotlin class is registered as a JavaScript interface in the WebView, letting the HTML pages call native Android functions:
| JS Call | What it does |
|---|---|
AndroidBridge.openLogin() |
Loads login.html in the WebView |
AndroidBridge.onLoginSuccess() |
Returns to SalahSync.html after sign-in |
AndroidBridge.openGoogleSignIn() |
(Reserved) Triggers native Google Sign-In |
SalahSync includes 22 hand-curated themes across 4 categories:
| Category | Themes |
|---|---|
| βͺοΈ Islamic & Spiritual | Sacred Gold, Madinah Green, Al-Aqsa Blue, Pre-Dawn Purple, Iftar Amber, Jannah Emerald |
| π Luxury & Premium | Royal Gold, Diamond Ice, Platinum, Rose Gold, Deep Velvet, Obsidian Violet |
| πΏ Nature & Elements | Midnight Blue, Aurora Borealis, Sahara Dunes, Deep Ocean, Volcanic Fire, Nebula Pink |
| β‘ Modern & Tech | Matrix Green, Neon Cyber, Steel & Amber, Monochrome |
Type01warrior
This project is for personal and educational use. All rights reserved Β© Type01warrior.
May Allah accept our prayers. π€²