Skip to content

ToDoApp demonstrates modern Android development with Hilt, Coroutines, Flow, Jetpack (Room, ViewModel), and Material Design based on MVVM architecture.

Notifications You must be signed in to change notification settings

nickand/ToDoCompose

Repository files navigation

ToDoCompose

🗡️ ToDoApp demonstrates modern Android development with Hilt, Coroutines, Flow, Jetpack (Room, ViewModel), and Material Design based on MVVM architecture.


Tech stack & Open-source libraries

  • Minimum SDK level 21

  • Kotlin based, Coroutines + Flow for asynchronous.

  • Jetpack

    • Lifecycle: Observe Android lifecycles and handle UI states upon the lifecycle changes.
    • ViewModel: Manages UI-related data holder and lifecycle aware. Allows data to survive configuration changes such as screen rotations.
    • Room: Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.
    • Hilt: for dependency injection.
    • Jetpack Compose
  • Architecture

    • MVVM Architecture (View - ViewModel - Model)
    • Repository Pattern
  • Retrofit2 & OkHttp3: Construct the REST APIs and paging network data.

  • Material-Components: Material design components for building ripple animation, and CardView.

  • Glide, GlidePalette: Loading images from network.

Architecture

ToDoApp is based on the MVVM architecture and the Repository pattern, which follows the Google's official architecture guidance.

The overall architecture of ToDoApp is composed of two layers; the UI layer and the data layer. Each layer has dedicated components and they have each different responsibilities, as defined below:

ToDoApp was built with Guide to app architecture, so it would be a great sample to show how the architecture works in real-world projects.

Architecture Overview

  • Each layer follows unidirectional event/data flow; the UI layer emits user events to the data layer, and the data layer exposes data as a stream to other layers.
  • The data layer is designed to work independently from other layers and must be pure, which means it doesn't have any dependencies on the other layers.

With this loosely coupled architecture, you can increase the reusability of components and scalability of your app.


UI Layer

The UI layer consists of UI elements to configure screens that could interact with users and ViewModel that holds app states and restores data when configuration changes.

  • UI elements observe the data flow, which is the most essential part of the MVVM architecture.

Data Layer

The data Layer consists of repositories, which include business logic, such as querying data from the local database.

ToDoApp is an offline-first app is an app that is able to perform all, or a critical subset of its core functionality without access to the internet. So users don't need to be up-to-date on the network resources every time and it will decrease users' data consumption. For further information, you can check out Build an offline-first app.

License

Designed and developed by 2022 nickand (Nicolas Gonzalez)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

ToDoApp demonstrates modern Android development with Hilt, Coroutines, Flow, Jetpack (Room, ViewModel), and Material Design based on MVVM architecture.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages