Skip to content

Android-TodoApp-Clean-Architecture-mvvm-roomdatabase-hilt-di-navigation-component

Notifications You must be signed in to change notification settings

Amarjeetjeet/ToDoList

Repository files navigation

Android Project: ToDoList

MVVM + Hilt + Flow + Coroutine + RoomDatabase + Navigation Component + Clean Architecture

App Screenshots

Dashboard (All task) DatePicker in Add Task TimePicker in Add Task Add Task
View Task Update Task

💡 Tech stack & Modern Library Tools

💡 Features

  • Task Add
  • Task Edit
  • Task Delete
  • Task Update
  • Task View

💡 What is Clean Architecture?

Clean architecture is a category of software design pattern for software architecture that follows the concepts of clean code and implements SOLID principles

It’s essentially a collection of best practice design principles that help you keep business logic, or domain logic, together and minimize the dependencies within the system.

Clean architecture is a method of software development in which you should be able to identify what a program performs merely by looking at its source code. Robert C. Martin, also known as Uncle Bob, came up with the Clean Architecture concept in the year 2012.

💡 Why Clean Architecture?

Separation of Concerns — Separation of code in different modules or sections with specific responsibilities making it easier for maintenance and further modification. Loose coupling — flexible code anything can be easily be changed without changing the system Easily Testable

We have not used Use cases because it will too much overkill for small project

💡 Layers of clean architecture

  • Presentation or UI: A layer that interacts with the UI, mainly Android Stuff like Activities, Fragments, ViewModel, etc. It is dependent on Use Cases.
  • Domain: Contains the business logic of the application. It is the individual and innermost module.
  • Data: It includes the domain layer. It would implement the interface exposed by domain layer and dispenses data to app.

💡 Advantages of Using Clean Architecture

  • Easily testable.
  • Scalable.
  • Your team can add new features even more quickly.
  • The project is even easier to maintain.

Under development