Movies demonstrates modern Android development with Hilt, RxJava3, Jetpack (Room, ViewModel,LiveData etc.), and Material Design based on MVVM clean architecture.
- Minimum SDK level 21
- Kotlin
- Lifecycle: Observe Android lifecycles and handle UI states upon the lifecycle changes.
- ViewModel: Manages UI-related data holder and lifecycle aware. Allows data to survive configuration changes such as screen rotations.
- DataBinding: Binds UI components in your layouts to data sources in your app using a declarative format rather than programmatically.
- Room: Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.
- Hilt: for dependency injection.
- Navigation Component.
- Gson is a serialization/deserialization library to convert objects into JSON and back.
- DataStore: Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers
- Retrofit2: Construct the REST APIs and paging network data.
- Glide: Loading images from network/resource.
- Rxjava3: A library for composing asynchronous and event-based programs by using observable sequences.
- Junit(Unit Test) : A simple framework to write repeatable tests.
- Mockito(Unit Test) : A mocking framework that lets you write beautiful tests with a clean & simple API.
This app uses MVVM clean Architecture.
Local Tests are done using Junit
& Mockito
.
Add your TMDB API key in the local.properties
file:
api_key = YOUR_API_KEY
At the moment this repo only have unit/local tests.Contribution in androidTest
/ UITest
is welcome.
Designed and developed by 2023 shamim-emon (Shamim Shahrier Emon)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.