Files
NotyKT/docs/pages/noty-android/getting-started.md
2022-02-13 23:00:54 +05:30

6.4 KiB

📱 Noty Android App

You can Install and test latest Covid19 Notifier app from below 👇

Noty Simple App Noty Compose App

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:

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.
  • Jetpack Security

  • DataStore - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers.

  • Dependency Injection -

  • 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