This simple application illustrate Android Development with Android Jectpack.
Android Note App is a simple app that use many of the Jetpack libraries build with minSdkVersion = 28
due to Google Play policies updates.
To clarify the project structure, we use 3 modules:
- app: Presentation module that contains all the views and UI Logic with Navigation library.
- domain: Domain module contains all the entities, usecases, repositories interfaces.
- data: Data module contains the database(Room) and DAO, DataMappers, Data Entities, Repositories implementation and Datasources.
- buildSrc: This is not a module itself, this is just a kotlin-dsl that provides all the dependencies for our gradle files. Of course, we use
kotlin-dsl
to build the project.
As you know Google suggest the use of Android Jetpack libraries to develop high performance applications with the lastest features that it provides.
We use additional features such as Flow with Coroutines and some customization with Day/Night themes.
-
Architecture - Android architecture components are a collection of libraries that help you design robust, testable, and maintainable apps.
- View Binding - View binding is a feature that allows you to more easily write code that interacts with views.
- ViewModel - The ViewModel class is designed to store and manage UI-related data in a lifecycle conscious way.
- LiveData - LiveData is an observable data holder class.
- Room - The Room persistence library provides an abstraction layer over SQLite.
- Navigation - Navigation refers to the interactions that allow users to navigate across, into, and back out from the different pieces of content within your app.
-
Foundation - Jetpack is a suite of libraries to help developers follow best practices
- Android KTX - Android KTX is a set of Kotlin extensions that are included with Android Jetpack and other Android libraries
-
UI - Shows how you can use UI elements to build interesting designs
- Fragment - A Fragment represents a behavior or a portion of user interface in a FragmentActivity
- Layout - A layout defines the structure for a user interface in your app, such as in an activity
- ConstraintLayout - A ConstraintLayout is a android.view.ViewGroup which allows you to position and size widgets in a flexible way.
-
Other libraries
- Material Components - Material Components for Android (MDC-Android) help developers execute Material Design.
- Hilt - Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
- Coroutines - A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously.
- Kluent - Kluent is a "Fluent Assertions" library written specifically for Kotlin. This library is used for Testing.
This repository is still in progress, the following functionalities are:
- Testing: In this feature we will implement unit testing for all the features. Last changes contains some test for DAO with Room (data module) and Repository Test (app module)
- Search: This feature is still in progress for searching notes in the main screen
- Paging: For this feature we will implement Paging with the Paging library 2 or maybe 3
- If you find a bug, report it creating and issue.
- If you want to contribute in this simple project, please create a fork and do a pull request with the new features.
✉️ Gmail