Assignment Project.
It has two screens, one for Remote Data, which we cannot add or edit. And another screen which contains local data.
Room is used for storing data locally.
Since, I am in love with TDD, you can know more by looking at the code. It can answer better than me :)
atmana-todo.mp4
- Pagination. i.e. automatically load data at reaching end
- Progress Bar when loading
- Automatically Refresh when local data is Added or Edited.
- Uses Coroutines, following Structured Concurrency Principles
- Uses Flow, instead of relying on LiveData Android dependency
- Good Coverage with End To End, Integration and Unit Tests
- Material.io guide/components for Ui
- Github Actions CI
- MVVM
- Test Driven Development (TDD)
- Emergent/Evolutionary/Incremental Design
- Patterns applied as code asks, rather than forcing them
- SOLID, DRY, KISS and YAGNI(now)
- Hilt
- Android Jetpack Libraries
- Room
- Navigation
- DataBinding
- Kotlin
- Flow
- Coroutine
- Third Party
- Retrofit
- GSON
- mockito
- Junit
- Espresso
- kotlinx-coroutines-test
- mockwebserver
see scratchpad.txt