Noty Android application is built with Modern Android application development tools or libraries. Aim of this project is to showcase Good practice implementation of Android application development with proper architecture design. Dedicated to all Android Developers with ❤️.
📄 Visit the documentation of this project to get more information in detail.
You can Install and test latest NotyKT app from below 👇
The codebase focuses on following key things:
- Single Activity Design
- Offline Capability - Notes
✈️ - Clean and Simple Material UI 🎨
- Dark mode 🌗
- Jetpack Compose UI
- Tests
- Noty Android app is available with traditional approach using Navigation Architecture as well as modern UI development toolkit i.e. Jetpack Compose UI.
- There are two submodules in
app
module as following::app:simpleapp
: Android Noty UI implementation using Navigation Architecture using traditional XML resources.:app:composeapp
: Android Noty UI implementation using Jetpack Compose UI Toolkit with Kotlin ❤️.
In Android Studio, just run the application as you want with any one of the module from above.
You will require latest Canary version of Android Studio 4.2 or newer to be able to build the app. Download latest Canary release from here.
Design of this awesome application is implemented by Sanju S. You can see design below.
- Kotlin - First class and official programming language for Android development.
- Coroutines - For asynchronous and more..
- Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- LiveData - Data objects that notify views when the underlying database changes.
- ViewModel - Stores UI-related data that isn't destroyed on UI changes.
- ViewBinding - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
- Room - SQLite object mapping library.
- WorkManager - WorkManager is an API that makes it easy to schedule deferrable, asynchronous tasks that are expected to run even if the app exits or the device restarts.
- Navigation Component Navigation refers to the interactions that allow users to navigate across, into, and back out from the different pieces of content within your app.
- Safe args - Gradle plugin that provides type safety when navigating and passing data between destinations.
- Jetpack Security
- Encrypted SharedPreference - Used to store key-value data using encryption.
- DataStore - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers.
- Dependency Injection -
- Hilt-Dagger - Standard library to incorporate Dagger dependency injection into an Android application.
- Hilt-ViewModel - DI for injecting
ViewModel
. - Hilt-WorkManager - DI for injecting
WorkManager
. - Assisted Inject with Dagger - Manually injected dependencies for your JSR 330 configuration.
- Retrofit - A type-safe HTTP client for Android and Java.
- Moshi - A modern JSON library for Kotlin and Java.
- Moshi Converter - A Converter which uses Moshi for serialization to and from JSON.
- Material Components for Android - Modular and customizable Material Design UI components for Android.
- Jetpack Compose UI Toolkit - Modern UI development toolkit.
- Accompanist - Accompanist is a group of libraries that aim to supplement Jetpack Compose with features that are commonly required by developers but not yet available.
- LeakCanary - Memory leak detection library for Android
- Kotest - Kotest is a flexible and elegant multi-platform test framework for Kotlin with extensive assertions and integrated property testing
- Mockk - Mocking library for Kotlin
-
app
: Includes common application needs such as DI bindings, ViewModel, Session, etc.simpleapp
: UI implementation using Navigation Architecture using traditional XML resources.composeapp
: UI implementation using Jetpack Compose UI Toolkit
-
core
: Pure JVM module consist of utilities, interfaces and base boilerplate. -
data
: Data Sourcelocal
: Persistent storage of data using Room (SQLite) database.remote
: Network layer implemented using Retrofit.
-
repository
: For single source of data. Implementslocal
andremote
modules.
This app uses MVVM (Model View View-Model) architecture.