Prayer_App

Prayers times application is a simple application for showing prayers times. This application should allow the user to view the daily prayers times based on his location and selected calculation method. User should be able to view the today’s prayers times and upcoming prayers times for a week, and display a countdown timer for the next prayer time. User should also be able to view the Qibla direction on map based on his location. As an additional point, the app can display the live direction of the Qibla based on the gyroscope sensor.

App Requirement Details:

  • In home screen, the APP must fetch and show today’s prayers times based on user location.
  • Change the selected day by click back and forward arrows with limitation by today.
  • Store times locally to be shown if there was any problem with network.
  • Showing times in 12Hrs format.
  • Count down for the next prayer time in home screen.
  • Showing current location title in home screen.
  • Navigate to map screen to show Kaaba marker and current location marker.
  • Showing Qibla direction line on map screen.
  • Change the live direction based on gyroscope sensor result. (bonus points)

Screenshots

Video

Prayer.App.mp4

Tools

  • Kotlin
  • View Model – The View Model class is designed to store and manage UI-related data in a lifecycle conscious way.
  • Live Data – LiveData is an observable data holder class. Unlike a regular observable, LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
  • Data Binding – The Data Binding Library is a support library that allows you to bind UI components in your layouts to data sources in your app using a declarative format rather than programmatically.
  • Dependency Injection Using Hilt – Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
  • Repository Pattern
  • Google gson – For parsing JSON data.

Database

  • Room – The Room persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.

Network Calls

  • Retrofit – A type-safe HTTP client for Android and Java.

Background tasks

  • Kotlin Coroutines – A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously.

Code Architecture

http://fernandocejas.com/2015/07/18/architecting-android-the-evolution/

API

End Points

GitHub

View Github