6.4 KiB
📱 Noty Android App
You can Install and test latest Covid19 Notifier app from below 👇
This is mobile application using which actual users will interact with. The application is developed using Modern tools/libraries with UI implementations with Navigation architecture as well as Modern UI development toolkit i.e. Jetpack Compose.
It connects with the Noty REST API to save and retrieve data.
👓 Features of Codebase
- Single Activity Design
- Offline Capability - Notes ✈️
- Clean and Simple Material UI 🎨
- Dark mode 🌗
- Jetpack Compose UI
- Tests
📙 Overview of Codebase
This is Gradle based multi-module project having modules as following:
Application (app
)
This is the main Android application module which include Android specific features or code. It includes common shared code for both submodules like DI bindings, ViewModel, Session Manager, etc.
It has two submodules as:
-
Simple Application (
simpleapp
): UI implementation using Navigation Architecture using traditional XML resources. -
JetPack Compose Application (
composeapp
): UI implementation using Jetpack Compose UI Toolkit
Core (core
)
Pure JVM module consist of utilities, interfaces and base boilerplate.
Data (data
)
This is a data source for the application. It has two sub-modules as following.
-
Local Data (
local
): Persistent storage of data using Room (SQLite) database. -
Remote Data(
remote
): Network layer implemented using Retrofit.
Repository (repository
)
For single source of data. Implements local
and remote
modules.
Built with 🛠
-
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.
-
- 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.
-
- 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