Easy Note
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.
Screenshots
Demo
Architecture
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
Modules:
- 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
MAD Scorecard
Tech stack - Library:
- 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.
TODO
- CI/CD (Github Actions, Bitrise, CircleCI)
- Unit test
- Jacoco for test coverage
- Ktlint or Detekt
Reference repository
- This repository code is mostly inspired by Android-Clean-Architecture-Boilerplate.
- Thanks, Philipp Lackner for the excellent tutorial video Youtube
❤️
Find this repository useful? Support it by joining stargazers for this repository.
And follow me for my next creations!
Contributions
Please feel free to file an issue for errors, suggestions or feature requests. Pull requests are also encouraged.