8.8 KiB
NotyKT (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 👇
Features 👓
The codebase focuses on following key things:
- Single Activity Design
- Offline Capability - Notes ✈️
- Clean and Simple Material UI (Material 3 with Dynamic UI) 🎨
- Dark mode 🌗
- Jetpack Compose UI with Material 3
- Comprehensive Test Coverage (Unit, UI)
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::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.
Development Setup 🖥
You will need Android Studio Iguana (2023.2.1) or newer to build the app. Download the latest version from here.
The project uses Gradle Version Catalog for dependency management and Java 17 for compilation.
Design / Wireframes ✨
Design of this awesome application is implemented by Sanju S. You can see design below.
🌞 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.
- 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
. - Hilt-Navigation-Compose - DI for Compose Navigation.
- 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.
- Material 3 - Latest version of Google's open-source design system.
- Jetpack Compose UI Toolkit - Modern UI development toolkit.
- Compose Material 3 - Material 3 implementation for Compose.
- Compose Navigation - Navigation component for Compose.
- Compose Constraint Layout - Constraint-based layout system for Compose.
- MuteKt - Immutable state management library for Kotlin.
- Capturable - Library to capture Compose UI as images.
- Compose Compiler Report Generator - Tool to generate reports about Compose compiler metrics.
- LeakCanary - Memory leak detection library for Android.
- Lottie for Compose - Library for rendering After Effects animations in Compose.
- Testing
- JUnit5 - JUnit 5 is the latest version of the popular Java unit testing framework.
- Mockk - Mocking library for Kotlin.
- Compose Testing - Tools for testing Compose UI.
- Hilt Testing - Testing utilities for Hilt.
Modules
-
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.
Architecture
This app uses MVVM (Model View View-Model) architecture.