CryptoMovies
CryptoMovies is a small app that shows modern Android developement: with Hilt, Coroutines, Flow, Jetpack and Material Design 3.
Project Setup / Before building the app
Is a bad practice storing API Keys inside Git repositories so you will need to add it manually. Please, add the MovieDB API Key inside the local.properties
file in the root directory of the project:
sdk.dir=/Users/lpirro/Library/Android/sdk
apiKey="moviedb api key"
Tech stack
- Minimum SDK 23
- 100% Kotlin
- Material Design 3
- Dark/Light mode support
- Coroutines + Flow for asynchronous operations
- HILT for Dependency Injection
- Architecture
- MVVM
- Clean Architecture
- Repository Pattern
- Jetpack
- Navigation: For handling Navigation inside the app
- LifeCycle: For managing UI related data in a LifeCycle conscious way
- ViewBinding: For binding UI views into controllers (like Fragments, Activities)
- Room: For creating a Database by providing an abstraction layer over SQLite
- Retrofit / OkHttp3: For performing network request
- Robolectric: For Unit Test
- Mockito: Mocking framework for Unit Test
- Turbine: Turbine is a small testing library for kotlinx.coroutines Flow.
- Glide: For network image loading
- Material Components: For building the UI
- Ktlint: For code-formatting and for keeping the code style consistent across the project
Architecture
This app is based on MVVM architecture and follows Clean Architecture principles with the repository pattern
Design
For designing this app, I used Figma, one of the industry standard tools used by Designers for creating UI and UX for mobile and Desktop. You can find the artboard of the app with all the specs here: CryptoMovies
API
CryptoMovies uses the open API from The Movie Database