Easy Note: Notes app using JetPack Compose and MVVM with a clean architecture approach.
This app shows the usage of the new Navigation Architecture Component in collaboration with the Jetpack Compose.
App features:
- List of Notes
- Add Edit Notes
- Delete Notes
- Search, Filter Notes
- Light/ Dark theme.
- Custom font.
Demo
Uses concepts of the notorious Uncle Bob's architecture called Clean Architecture.
- Better separation of concerns. Each module has a clear API., Feature related classes life in different modules and can't be referenced without explicit module dependency.
- Features can be developed in parallel eg. by different teams
- Each feature can be developed in isolation, independently from other features
- faster compile time
- app - It uses all the components and classes releated to Android Framework. It gets the data from presentation layer and shows on UI. (access all the modules)
- core - Module contains all the resuable compose component and other util classes.
- feature_note - Module contains all the classes and interface used to add edit and delete note screen.
- feature_settings - Modules contains all the classes and interface used for settings screen
- Kotlin
- Coroutines - A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously
- Flow - Flow is used to pass (send) a stream of data that can be computed asynchronously
- Dagger-Hilt - for dependency injection.
- Kotlin-DSL - Used to handle gradle dependencies and config versions
- Compose
- JetPack
- LiveData - For reactive style programming (from VM to UI).
- Lifecycle - Used get lifecyle event of an activity or fragment and performs some action in response to change
- ViewModel - Stores UI-related data that isn't destroyed on UI changes.
- Room - Used to create room db and store the data.
- Navigation - Used to navigate between fragments
- Material-Components - Material design components like ripple animation, cardView.
- CI/CD (Github Actions, Bitrise, CircleCI)
- Unit test
- Jacoco for test coverage
- Ktlint or Detekt
- This repository code is mostly inspired by Android-Clean-Architecture-Boilerplate.
- Thanks, Philipp Lackner for the excellent tutorial video Youtube
Support it by joining stargazers for this repository. ⭐
And follow me for my next creations! 🤩
Please feel free to file an issue for errors, suggestions or feature requests. Pull requests are also encouraged.