Skip to content

Latest commit

 

History

History

noty-android

NotyKT (Android) 📱

Build (Android)

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 👇

Noty Simple App Noty Compose App

Features 👓

The codebase focuses on following key things:

  • Single Activity Design
  • Offline Capability - Notes ✈️
  • Clean and Simple Material UI 🎨
  • Dark mode 🌗
  • Jetpack Compose UI
  • Tests

About this project 💡

  • 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:

In Android Studio, just run the application as you want with any one of the module from above.

Development Setup 🖥

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 / Wireframes ✨

Design of this awesome application is implemented by Sanju S. You can see design below.

Figma Design

🌞 Light Mode

🌙 Dark Mode

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

Modules

  • app: Includes common application needs such as DI bindings, ViewModel, Session, etc.

  • core: Pure JVM module consist of utilities, interfaces and base boilerplate.

  • data: Data Source

    • local: Persistent storage of data using Room (SQLite) database.
    • remote: Network layer implemented using Retrofit.
  • repository: For single source of data. Implements local and remote modules.

Architecture

This app uses MVVM (Model View View-Model) architecture.

MVVM Architecture