This app is a free to-do list, planner for managing and organizing your daily tasks, to-do lists, notes, reminders
The architecture of the application is based, apply and strictly complies with each of the following 5 points:
- A single-activity architecture, using the Navigation component to manage fragment operations.
- Android architecture components, part of Android Jetpack for give to project a robust design, testable and maintainable.
- Pattern Model-View-Presenter (MPV) & Moxy facilitating a separation of development of the graphical user interface.
- S.O.L.I.D design principles intended to make software designs more understandable, flexible and maintainable.
- Android-CleanArchitecture
This project takes advantage of many popular libraries, plugins and tools of the Android ecosystem. Most of the libraries are in the stable version, unless there is a good reason to use non-stable dependency.
- Minimum SDK level 21
- Kotlin based + Coroutines for asynchronous.
- Jetpack:
- Android KTX - provide concise, idiomatic Kotlin to Jetpack and Android platform APIs.
- AndroidX - major improvement to the original Android Support Library, which is no longer maintained.
- Lifecycle - perform actions in response to a change in the lifecycle status of another component, such as activities and fragments.
- Navigation - helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
- Room - persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
- Work Manager - 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.
- Coroutines - managing background threads with simplified code and reducing needs for callbacks.
- Hilt - dependency injector for replacement all FactoryFactory classes.
- google/gson - gson is a Java library that can be used to convert Java Objects into their JSON representation.
- Timber - a logger with a small, extensible API which provides utility on top of Android's normal Log class.
- Ktlint - an anti-bikeshedding Kotlin linter with built-in formatter.
- Detekt - a static code analysis tool for the Kotlin programming language.
- SafeArgs - generates simple object and builder classes for type-safe navigation and access to any associated arguments.
- Firebase Crashlytics - Firebase Crashlytics helps you track, prioritize, and fix stability issues that erode app quality, in realtime. Spend less time triaging and troubleshooting crashes and more time building app features that delight users.
- Firebase Authentication - Firebase Authentication provides backend services, easy-to-use SDKs, and ready-made UI libraries to authenticate users to app
In terms of design has been followed recommendations android material design comprehensive guide for visual design across platforms and devices. Support Dark theme.