Skip to content

devrath/Distance-Tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

cover

Distance-Tracker 🧞‍

Android Best practices Kotlin Coroutines DaggerHilt Firebase Timber Orhanobut Google Material Crashlytics Fused Location Service OkHttp OkHttp-interceptors Kotlin-Serialization

𝙰𝚛𝚌𝚑𝚒𝚝𝚎𝚌𝚝𝚞𝚛𝚎 🎈

𝙱𝚕𝚘𝚌𝚔 𝙳𝚒𝚊𝚐𝚛𝚊𝚖

dev_logo

𝙼𝚅𝚅𝙼-𝙰𝚙𝚙𝚛𝚘𝚊𝚌𝚑

dev_logo

𝚃𝚑𝚎 𝚊𝚛𝚌𝚑𝚒𝚝𝚎𝚌𝚝𝚞𝚛𝚎 𝚘𝚏 𝚝𝚑𝚎 𝚊𝚙𝚙𝚕𝚒𝚌𝚊𝚝𝚒𝚘𝚗 𝚒𝚜 𝚋𝚊𝚜𝚎𝚍, 𝚊𝚙𝚙𝚕𝚢 𝚊𝚗𝚍 𝚜𝚝𝚛𝚒𝚌𝚝𝚕𝚢 𝚌𝚘𝚖𝚙𝚕𝚒𝚎𝚜 𝚠𝚒𝚝𝚑 𝚎𝚊𝚌𝚑 𝚘𝚏 𝚝𝚑𝚎 𝚏𝚘𝚕𝚕𝚘𝚠𝚒𝚗𝚐 𝟻 𝚙𝚘𝚒𝚗𝚝𝚜 🐿️

SlNo Description
1 A single-activity architecture, using the Navigation component to manage fragment operations.
2 Android architecture components, part of Android Jetpack for give to project a robust design, testable and maintainable.
3 Pattern Model-View-ViewModel (MVVM) facilitating a separation of development of the graphical user interface.
4 S.O.L.I.D design principles intended to make software designs more understandable, flexible and maintainable.
5 Modular app architecture allows to be developed features in isolation, independently from other features.

𝙼𝚘𝚍𝚞𝚕𝚊𝚛𝚒𝚣𝚊𝚝𝚒𝚘𝚗 𝚜𝚝𝚛𝚊𝚝𝚎𝚐𝚒𝚎𝚜 𝚞𝚜𝚎𝚍 🦨

Name Description
Reusability Keeping code reusable so same code snippets are utilized in different parts of the code
Parallel Building Modular approach reduces the build time
Strict visibility control Modules restrict to expose dedicated components and access to other layers, so it prevents they're being used outside the module
Decentralized focusing Each developer team can assign their dedicated module and they can focus on their own modules

𝙳𝚎𝚖𝚘 𝚘𝚏 𝚝𝚑𝚎 𝚙𝚛𝚘𝚓𝚎𝚌𝚝 💡

This application is used to track the user distance traveled and the time taken to travel the distance.

Features with Description Wiki Demo
Location-Tracking : With this feature users can start the tracking from a source and travel to destination. Then measure the distance travelled and time taken for the journey with a visual display on the map using hte polyline. Users will be able to track the distance even when the app is not in the foreground or background using a foreground service. Documentation
Splash API: With this API there is no need of creating a separate activity to customise the splash screen. The system will automatically create one for you. It also allows you to have a new launch animation for your apps and ability to perform a long running operation.
In-App updates: Using this API, users will be able to update the application in an eligant way thus keeping the app always up-to-date. Documentation
App-reviews: This API lets you prompt users to submit Play Store ratings and reviews without the inconvenience of leaving your app.
Network Observer: This is used to observe the network change if connected/disconnected to user Documentation
Toggling dark/light mode from app: This application supports system dark/light mode along with it user can force the toggling of modes in android Documentation
Changing the map style: We can dynamically change the map style of android to provide a different user experience

Useful learnings 💡

𝙳𝚎𝚙𝚎𝚗𝚍𝚎𝚗𝚌𝚒𝚎𝚜🧵

  • Jetpack-Androidx: Major improvement to the original Android Support Library, which is no longer maintained.
  • View-Binding: Allows you to more easily write code that interacts with views. An instance of a binding class contains direct references to all views that have an ID in the corresponding layout.
  • Lifecycle: Perform actions in response to a change in the lifecycle status of another component, such as activities and fragments.
  • LiveData: lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
  • Navigation: helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
  • Timber: a logger with a small, extensible API which provides utility on top of Android's normal Log class.
  • DataStore: iData storage solution that allows you to store key-value pairs.
  • Fused location provider: Get location data for your app based on combined signals from the device sensors using a battery-efficient API.
  • Google play core: Download additional language resources, Manage delivery of feature modules, Manage delivery of asset packs, Trigger in-app updates, Request in-app reviews
  • Coroutines: A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously

𝙲𝚘𝚍𝚎 𝚜𝚝𝚢𝚕𝚎🪀

To maintain the style and quality of the code, are used the bellow static analysis tools.

Tools Config file Check command Fix command
detekt /.detekt ./gradlew detekt -
ktlint - ./gradlew ktlint ./gradlew ktlintFormat
spotless /.spotless ./gradlew spotlessCheck ./gradlew spotlessApply
lint /.lint ./gradlew lint -

𝚃𝚎𝚌𝚑 𝚜𝚝𝚊𝚌𝚔 🏗️️

What How
🎭 𝚄𝚜𝚎𝚛 𝙸𝚗𝚝𝚎𝚛𝚏𝚊𝚌𝚎 (𝙰𝚗𝚍𝚛𝚘𝚒𝚍) 𝙹𝚎𝚝𝚙𝚊𝚌𝚔 𝙲𝚘𝚖𝚙𝚘𝚜𝚎 , 𝙰𝚌𝚝𝚒𝚟𝚒𝚝𝚢+𝚇𝙼𝙻
🏗 𝙰𝚛𝚌𝚑𝚒𝚝𝚎𝚌𝚝𝚞𝚛𝚎 𝙲𝚕𝚎𝚊𝚗 𝙰𝚛𝚌𝚑𝚒𝚝𝚎𝚌𝚝𝚞𝚛𝚎
💉 𝙳𝙸 (𝙰𝚗𝚍𝚛𝚘𝚒𝚍) 𝙷𝚒𝚕𝚝
🌊 𝙰𝚜𝚢𝚗𝚌 𝙲𝚘𝚛𝚘𝚞𝚝𝚒𝚗𝚎𝚜 + Flow
🌐 𝙳𝚊𝚝𝚊𝚋𝚊𝚜𝚎 𝚁𝚘𝚘𝚖

𝙿𝚕𝚊𝚢𝚜𝚝𝚘𝚛𝚎 𝙳𝚘𝚠𝚗𝚕𝚘𝚊𝚍 🧰

𝚂𝚞𝚙𝚙𝚘𝚛𝚝

If you feel like support me a coffee for my efforts, I would greatly appreciate it.
Buy Me A Coffee

𝙲𝚘𝚗𝚝𝚛𝚒𝚋𝚞𝚝𝚎 🙋‍♂️

Read contribution guidelines for more information regarding contribution.

𝙵𝚎𝚎𝚍𝚋𝚊𝚌𝚔 ✍️

Feature requests are always welcome, File an issue here.

𝙵𝚒𝚗𝚍 𝚝𝚑𝚒𝚜 𝚙𝚛𝚘𝚓𝚎𝚌𝚝 𝚞𝚜𝚎𝚏𝚞𝚕 ? ❤️

Support it by clicking the ⭐ button on the upper right of this page. ✌️

𝙻𝚒𝚌𝚎𝚗𝚜𝚎 Licence 🚔

This project is licensed under the Apache License 2.0 - see the LICENSE file for details