https://github.com/ImnIrdst/iiCnma
A playground android app, showcasing the latest technologies and architectures using the Movie Database APIs.
https://github.com/ImnIrdst/iiCnma
android clean-architecture coroutine coroutines-flow hilt mockk mvvm navigation-component paging3
Last synced: 5 months ago
JSON representation
A playground android app, showcasing the latest technologies and architectures using the Movie Database APIs.
- Host: GitHub
- URL: https://github.com/ImnIrdst/iiCnma
- Owner: ImnIrdst
- License: mit
- Created: 2020-11-12T07:56:25.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-02-09T01:02:02.000Z (about 2 years ago)
- Last Synced: 2024-08-03T17:10:41.707Z (8 months ago)
- Topics: android, clean-architecture, coroutine, coroutines-flow, hilt, mockk, mvvm, navigation-component, paging3
- Language: Kotlin
- Homepage:
- Size: 5.96 MB
- Stars: 47
- Watchers: 2
- Forks: 6
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-android-kotlin-apps - iiCnma
README
# iiCnma
A playground android app, showcasing the latest technologies and architecture patterns using the [Movie Database](https://www.themoviedb.org/) APIs.# Demo
![]()
![]()
# Technologies
- Kotlin Coroutines, Flow, StateFlow
- Hilt
- Paging3
- Navigation Component
- LiveData
- ViewModel
- Room
- Retrofit
- OkHttp3
- Glide
- jUnit
- Mockk
- Coroutine Test# Architecture
A custom architecture inspired by the [Google MVVM](https://developer.android.com/jetpack/guide) and the [Clean architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html).This architecture allows app to be offline first. It gets data from the network if it doesn't exist in the local database and persists it. Local database is the single source of truth of the app and after its data changes, it notifies other layers using coroutine flows.
# Build
Clone the repository and get an [API key](https://www.themoviedb.org/settings/api) from the Movie Database and put it in the `local.properties` file as below:```properties
apikey="YOUR_API_KEY"
```