Skip to content

This app demonstrates the best practices for Android development and contains a repository of tutorials, benchmarks and reference implementations

License

Notifications You must be signed in to change notification settings

techyourchance/TechYourChance-Android-Application

Repository files navigation

TechYourChance Android Application

This app demonstrates the best practices for Android development and contains a repository of useful features that you can learn from and use in your projects. It shows what I consider to be a "clean and pragmatic Android code".

The architecture, implementation details, tests, etc. in this application follow the practices and guidelines that I teach in my Android development courses.

Sponsors

Huge thanks to Bitrise for sponsoring the Continuous Integration infrastructure in this project!

Installation

You can download a prebuilt APK file attached to the latest release, or clone this repo and build the application from the source code.

Application Updates

The application includes auto-update feature. It uses a special Android API that will prompt you to approve the installation of each new version of the application. On the first update, this API will also ask you to enable the auto-update feature in device's settings app.

Alternatively, you can download the latest APK from here and update the application manually, or even build the update from the source code.

Blog posts' tutorials

Parts of the source code in this app correspond to the articles I published on my blog:

Blog Post Source Code
Bottom Bar Navigation in Android with Compose Navigation Screen
Foreground Service in Android Screen
Logic
WorkManager in Android Screen
Logic
Android Room Tutorial Part 2 – The Architecture Logic
Android NDK Tutorial Screen
Logic
Biometric Authentication in Android Screen
Logic
How to Use Jetpack Compose Inside Android Service Screen
Logic
Kotlin Coroutines vs Threads Performance Benchmark Screen
Logic
Kotlin Coroutines vs Threads Memory Benchmark Screen
Logic
Android SharedPreferences Performance: Commit vs Apply Screen
Logic

Architecture

The project is written in Kotlin.

Some parts of the UI use the "classical" Android UI framework (XMLs + Views), while others use Jetpack Compose. There are also screens that demonstrate alternative implementations of UI components using Views and Compose (i.e. you can switch between different implementations of the same UI component).

Packages structure of the application follows package by feature approach.

Dependency injection architectural pattern is implemented using Dagger 2 framework.

Presentation layer logic is organized according to MVC architectural pattern.

Functional flows in the app are encapsulated into Use Case classes.

The logic responsible for navigation between screens is encapsulated in ScreensNavigator class.

DialogsNavigator "facade" class is responsible for showing dialogs.

Kotlin Coroutines framework is used for concurrency.

Contribution

Bug reports, code quality feedback and feature suggestions are welcome. Since this project aims to demonstrate a very specific approach to Android development, any external contribution should be discussed and approved in advance.

About

This app demonstrates the best practices for Android development and contains a repository of tutorials, benchmarks and reference implementations

Topics

Resources

License

Stars

Watchers

Forks

Languages