This is a sample application built using Kotlin, following the MVVM architecture pattern. It leverages various Android components such as ViewModel, LiveData, and DataBinding. The app fetches data from the TMDB and displays information about movies in two languages (English or Spanish MX) depends of the current language on the device.
Go to the Releases to download the latest APK.
- Fetches movies data from the TMDB API using Retrofit.
- Implements a clean architecture pattern with MVVM, separating concerns between UI, data, and business logic.
- Utilizes Coroutines for asynchronous programming and network operations.
- Implements RecyclerView and CardView for displaying lists of characters.
- Utilizes Glide for image loading and caching.
- Implements navigation using Fragment transactions.
- Retrofit: A type-safe HTTP client for Android and Java.
- Coroutines: Provides asynchronous programming with Kotlin.
- ViewModel: Stores and manages UI-related data in a lifecycle-conscious way.
- LiveData: An observable data holder class.
- DataBinding: Binds UI components in your layouts to data sources in your app.
- Glide: An image loading and caching library for Android.
TMDB is based on the MVVM architecture and the Repository pattern, which follows the Google's official architecture guidance.
The UI layer consists of UI elements to configure screens that could interact with users and ViewModel that holds app states and restores data when configuration changes.
- UI elements observe the data flow via DataBinding, which is the most essential part of the MVVM architecture.
The data Layer consists of repositories, which include business logic, such as querying data from the local database and requesting remote data from the network. It is implemented as an offline-first source of business logic and follows the single source of truth principle.
TMDB is an offline-first app is an app that is able to perform all, or a critical subset of its core functionality without access to the internet. So users don't need to be up-to-date on the network resources every time and it will decrease users' data consumption. For further information, you can check out Build an offline-first app.
TMDB adopted modularization strategies below:
- Reusability: Modulizing reusable codes properly enable opportunities for code sharing and limits code accessibility in other modules at the same time.
- Parallel Building: Each module can be run in parallel and it reduces the build time.
- Strict visibility control: Modules restrict to expose dedicated components and access to other layers, so it prevents they're being used outside the module
- Decentralized focusing: Each developer team can assign their dedicated module and they can focus on their own modules.
For more information, check out the Guide to Android app modularization.
TMDB using the TMDB API for constructing RESTful API.
TMDB provides a RESTful API interface to highly detailed objects built from thousands of lines of data related to TMDB.
Support it by joining stargazers for this repository. ⭐
Also, follow me on GitHub for my next creations! 🤩
Designed and developed by 2024 osvaldo-esparza
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.
Special thanks to the developers of the TMDB API for providing the data used in this project.
This app was developed by Osvaldo Esparza. You can find more of my work on GitHub and LinkedIn. Feel free to reach out if you have any questions or inquiries!