Tech stack
Nimaz is built with a modern Android development stack focused on Kotlin and Jetpack libraries:Jetpack Compose
Modern declarative UI toolkit for building native Android interfaces
Hilt
Dependency injection framework built on top of Dagger
Room
SQLite abstraction layer for robust local data persistence
Kotlin Coroutines
Asynchronous programming with Flow for reactive data streams
Project configuration
Architecture principles
Nimaz follows Clean Architecture principles with clear separation of concerns:- Domain Layer: Business logic and use cases
- Data Layer: Repository implementations and data sources
- Presentation Layer: UI components and ViewModels
The app uses unidirectional data flow (UDF) pattern with ViewModels emitting UI state via StateFlow.
Development setup
Prerequisites
- Android Studio Hedgehog (2023.1.1) or later
- JDK 21
- Android SDK 36
- Kotlin 2.3.0 or later
Building the project
- Clone the repository
- Open the project in Android Studio
- Sync Gradle dependencies
- Run the app on an emulator or physical device (API 29+)
Key features
Nimaz includes comprehensive Islamic features:Quran & Tafseer
Quran & Tafseer
- Complete Quran with multiple translations
- Tafseer (commentary) with highlighting and notes
- Bookmarks, favorites, and reading progress tracking
- Khatam (recitation completion) tracking with daily goals
Prayer Times & Tracking
Prayer Times & Tracking
- Accurate prayer times using the Adhan library
- Prayer tracking with historical records
- Customizable notifications with Adhan sounds
- Qibla compass with camera overlay
Islamic Content
Islamic Content
- Hadith collections from various books
- Dua (supplications) with audio playback
- 99 Names of Allah (Asma ul Husna)
- Names of Prophet Muhammad (Asma un Nabi)
- Stories of 25 Prophets
Worship Tools
Worship Tools
- Digital Tasbih (counter) with presets
- Fasting tracker for Ramadan and voluntary fasts
- Zakat calculator with history
- Hijri calendar with Islamic events
Widgets
Widgets
- Next prayer time widget
- All prayer times widget
- Prayer tracker widget
- Hijri date widget
- Hijri calendar widget
Testing
Nimaz uses a comprehensive testing setup:- Unit Tests: JUnit, MockK, Truth, Turbine, Robolectric
- Instrumented Tests: Espresso, Compose UI Testing, Hilt Testing
Contributing
When contributing to Nimaz:- Follow the existing architecture patterns
- Use meaningful commit messages
- Write tests for new features
- Follow Kotlin coding conventions
- Update documentation as needed
Next steps
Architecture
Learn about the Clean Architecture implementation
Project structure
Understand the directory organization
Dependencies
Explore the key libraries and their usage