Awesome
SoMovie [Work in progress 🚧]
An android app using The Movie Database API to display the current trending, upcoming, popular and top rated movies.
Built entirely using the Jetpack Compose.
The aim of this project is to test the latest trends, libraries and tools to develop an Android application.
Preview
Explore
<img src="preview/preview1.gif" width="250"/>Discover
<img src="preview/preview2.gif" width="250"/>Watchlist
<img src="preview/preview3.gif" width="250"/>Details
<img src="preview/preview4.gif" width="250"/>Tech Stack
- Kotlin - Official programming language for Android development.
- Jetpack Compose - Android’s modern toolkit for building native UI.
- Coroutines and Flow - Official Kotlin's tooling for performing asynchronous work.
- Android Jetpack - Jetpack is a suite of libraries to help developers build state-of-the-art applications.
- ViewModel - The ViewModel is designed to store and manage UI-related data in a lifecycle conscious way.
- Room - The Room library provides an abstraction layer over SQLite to allow for more robust database access.
- DataStore - DataStore is a data storage solution that stores key-value pairs or typed objects.
- Dagger Hilt - Hilt is a dependency injection library for Android.
- Paging 3 - The Paging library helps to load and display pages of data from a larger dataset from local storage or over network.
- Accompanist - A collection of extension libraries for Jetpack Compose.
- Retrofit - A library for building REST API clients.
- Moshi - Moshi is a modern JSON library for Android to parse JSON into Java and Kotlin classes
- Coil - An image loading library.
- Timber - Timber is a logger with a small, extensible API which provides utility on top of Android's normal Log class.
- LeakCanary - LeakCanary is a memory leak detection library for Android.
- Flipper - Flipper is a platform for debugging Android apps.
- Detekt - A static code analysis library for Kotlin.
- Ktlint (Spotless) - A library for formatting Kotlin code according to official guidelines.
- Testing - The app is currently covered with unit tests and instrumentation tests.
- JUnit - JUnit is a unit testing framework for the Java programming language.
- Kotest assertion - Kotest assertion is a library providing fluent assertions for kotlin.
- Faker - A library for generating fake data that can be used for testing.
- Gradle's Kotlin DSL - Gradle’s Kotlin DSL is an alternative syntax to the Groovy DSL with an enhanced editing experience.
For more information about used dependencies, see this file.
Testing
As the application is not intended to be deployed in production, only the feature watchlist
has been tested.
Development setup
Add your The Movie Database's API key in local.properties file.
tmdb_api_key=YOUR_API_KEY