Cine Haven is an Android app for Movies with Jetpack Compose. It uses TMDB API. It has three main sections:
- Popular
- Top rated
- Upcoming movies
The app is built with the Model-View-ViewModel (MVVM) architecture with Repository pattern.
Obtain your key from TMDB API and replace it in the Constants
file:
API_KEY = "API_KEY_VALUE"
-
Kotlin - Most of the Android community uses Kotlin as their preferred choice of language.
-
Jetpack:
- Jetpack Compose - Jetpack Compose is Android’s modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs.
- Android KTX - Android KTX is a set of Kotlin extensions that are included with Android Jetpack and other Android libraries. KTX extensions provide concise, idiomatic Kotlin to Jetpack, Android platform, and other APIs.
- AndroidX - The androidx namespace comprises the Android Jetpack libraries. It's a major improvement to the original Android Support Library, which is no longer maintained.
- Lifecycle - Lifecycle-aware components perform actions in response to a change in the lifecycle status of another component, such as activities and fragments. These components help you produce better-organized, and often lighter-weight code, that is easier to maintain.
- ViewModel - The ViewModel class is a business logic or screen level state holder. It exposes state to the UI and encapsulates related business logic. Its principal advantage is that it caches state and persists it through configuration changes.
-
Dagger Hilt - A dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
-
Kotlin Coroutines - A concurrency design pattern that you can use on Android to simplify code that executes asynchronously and it's the recommended way for asynchronous programming on Android.
-
Kotlin Flow - In coroutines, a flow is a type that can emit multiple values sequentially, as opposed to suspend functions that return only a single value.
-
Retrofit - Retrofit is a REST client for Java/ Kotlin and Android by Square. Its a simple network library that is used for network transactions.
-
OkHttp - OkHttp is an HTTP client. It perseveres when the network is troublesome as it will silently recover from common connection problems.
-
GSON - JSON Parser, used to parse requests on the data layer for Entities and understands Kotlin non-nullable and default parameters.
-
Logging Interceptor - An OkHttp interceptor which logs HTTP request and response data.
-
Coil- An image loading library for Android backed by Kotlin Coroutines.
-
Timber- A logger with a small, extensible API which provides utility on top of Android's normal Log class.
You are always welcome to contribute to the project by creating a pull request or opening an issue.
- Add more information in the Movie Details screen
- Caching
- UI Improvements
- Tests
- Pagination