Code Monkey home page Code Monkey logo

movies's Introduction

RMovies

License API Profile

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.

Download

Go to the Releases to download the latest APK.

Features

  • 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.

Libraries Used

  • 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.

Architecture

TMDB is based on the MVVM architecture and the Repository pattern, which follows the Google's official architecture guidance.

architecture

UI Layer

architecture

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.

Data Layer

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.

Modularization

architecture

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.

Open API

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.

Find this repository useful? ❤️

Support it by joining stargazers for this repository. ⭐
Also, follow me on GitHub for my next creations! 🤩

License

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.

Acknowledgements

Special thanks to the developers of the TMDB API for providing the data used in this project.

About the Developer

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!

movies's People

Contributors

developsoti avatar osvaldo-esparza avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.