An Application that displays movies details

Related tags

App Movies
Overview

Movies

An Application that displays movies details

home screen searching movie details

Architecture

This Application follows the Ports & Adapters architecture, where the application logic is written in the core module in a plain kotlin/java module, with no external dependencies (only Rx for reactive functional support), and any platform specific code is in another modules, integrated through implementing the declared ports in the core

ports and adapters

Also Interfaces in Kotlin helped alot in designing the ports, as it can declare abstract properties which can be used in business rules ... new technique was not there in Java that makes defining ports more structured

pros

  • Testing: a pure java / kotlin core makes it very easy in testing
  • Scalability: it is easy to scale as the business rules are defined into ports, any technology can be used to serve more powerful usages while respecting the same business rules
  • Maintainability: maintainability is very easy as most of the changes in the future will be outside the core, like changing UI or upgrading to a database rather than cache, when this happens, the core module is un-touched
  • Security: as our core is not depending on any 3rd parties, it is very safe to keep the code that matters into the core, and the code that does not matter can be replaced if found any vulnerabilities
  • Performance: Specially in project build time, as the architecture requires multiple modules which makes build time faster

cons

  • Dependencies: dependencies needs to be managed across multiple modules, and each dependency must have a defined scope
  • Different Mindset: it requires some time for developers who are used to layered architectures, to rethink how they view the system, as Hexagonal architecture is very flexible that it cannot be described in layers, it is more of designing a puzzle of pluggable components rather than putting layers above each other

Testing

unit test coverage is around 70%, regardless of the numbers, any logic is unit tested across the application, weather it is presentation logic, business logic, application logic, or even data sources implementation

unit tests count core test coverage data-sources-test-coverage

APK

for the latest apk of the app, you can find it in this repository in releases directory: https://github.com/Ahmed-Adel-Ismail/Movies/tree/master/releases

or download it through this link: https://drive.google.com/file/d/1lPsqrvJNbk5qxbbFHMWYcRmA7pOMhSD0/view?usp=sharing

What's next (If you'd like to contribute)

  • I wish I could have implemented the UI with compose, but found problems in setting up stuff, so maybe in the coming iteration will convert the UI parts to compose
  • Also the UI needs to be much fancier, and UI tests are still need to be written
  • there were couple of bugs related to triggering API's while rotating the app, I disabled rotation for now till I fix those bugs then enable it again (it was fine till I started implementing the Movie Details screen)
  • with more data to deal with, the project can use Room database instead of in-memory cache, and implement the MigrationDataSource Port, then everything should be working as expected
  • Did not have chance to use coroutines that much in this project, just in couple of classes, wish to add more features and they could show some amazing stuff wth coroutines

Quality Matrices

Core Module

core quality

Data Sources Module

Data Sources Quality

Presentation Module

Presentation Quality

PS. All quality reports are generated by CodeMR plugin and available at codemr directory in this project for more details

You might also like...
Android application for GitHub user search and view user details
Android application for GitHub user search and view user details

GitHubApp Android application for GitHub user search and view user details Architecture UI observing the live data for the main list as received from

Movo (Movie Information) is an android application to find out all the Movie Information and Details.

Movo About The Project Screen.Recording.2022-08-12.at.08.53.46_1.mp4 Movo (Movie Information) is an android application to find out all the Movie Info

Movie List and details
Movie List and details

SCBAssignment Movie List and Movie details This project follows MVVM architecture pattern along with repository patten and flow api framework used suc

Covid Tracker - Show Details of Corona virus cases of all affected country

Covid_Tracker Based on MVVM Architecture Show Details of Corona virus cases of a

A demo project showcasing different exercises + details with prepopulated data from room. Includes tests
A demo project showcasing different exercises + details with prepopulated data from room. Includes tests

README Pre-requisites I used Android Studio Bumblebee (2021.1.1). In case of any issues, do let me know because I understand that issues might vary fo

πŸ› ThinkRchive Light Dark An app showing all details for various Lenovo Thinkpad models.
πŸ› ThinkRchive Light Dark An app showing all details for various Lenovo Thinkpad models.

πŸ› ThinkRchive Light Dark An app showing all details for various Lenovo Thinkpad models. Made to try out Jepack Compose for Android. This repo is a Mu

πŸš€ Stock Market App / See listed companies and details with Jetpack Compose.
πŸš€ Stock Market App / See listed companies and details with Jetpack Compose.

πŸš€ Stock Market App πŸš€ Preview πŸ‘€ ✨ See listed companies and details with Jetpack Compose ✨ πŸ“š Libraries Retrofit2 Open CSV Compose Destinations Dagge

A simple app to show case Master detail application for Movies
A simple app to show case Master detail application for Movies

Decade of Movies App Demo Application to understand the architecture of MVVM App with Unit tests Build Instructions The gradle build system will fetch

πŸŽ₯ A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose.
πŸŽ₯ A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose.

ComposeMovie Android πŸŽ₯ A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose. Built with

Owner
Ahmed Adel Ismail
Androider, developing multiple frameworks for Android, and working on applying new concepts for the Android community
Ahmed Adel Ismail
An application about searching movies and seeing details

MovieAPP About this project This project is a application about searching movies and seeing details about them. Used Technologies MVVM Architecture Re

Efecan Bayat 4 Feb 20, 2022
πŸ“ΊοΈ Recommend movies and get movie details.

MovieDB ??️ Recommend movies and get movie details. Preview MovieList Detail What I used name function ?? retrofit2 send api request Glide The path of

Hayeon Seo 1 Mar 6, 2022
TMDbHub - Listing movies using the TMDb API. You can filter results, view details, and save them to a collection

TMDb Hub Listing movies using the TMDb API. You can filter results, view details

David Varga 4 Dec 30, 2021
Keep track of popular & top rated movies and see movie details

Movies Keep track of popular & top rated movies and see movie details Features Keep track of popular & top rated movies See movie details Libraries Je

Amr Saraya 1 May 1, 2022
Modular android app for searching Movies on Filmnet.ir and show the details of each Move based on MVVM.

Movie_Search Modular android app for searching Movies on Filmnet.ir and show the details of each Move based on MVVM. Android MVVM Architecture Table o

ehsan kolivand 3 Nov 26, 2022
An application that displays information about movies getting from The Movie DB

Movie Project Part One - Display and Search Movie. Create an application that displays information about movies getting from The Movie DB.The movie in

ALBASIL 0 Nov 13, 2021
Movies-db-example - Sample Android application that loads movies data from a remote server

Movies Application Sample Android application that loads movies data from a remo

Bilal Ibrahim Hairab 0 Feb 8, 2022
Movies - Simple Application to show movies and advertisemnets

Movies Simple Application to show movies and advertisemnets Technologies This Ap

Reham Galal 0 Feb 3, 2022
It is my sixth project on android development.It displays informations of movies and shows.

Celluloid It is my sixth project on android development.It displays informations of movies and shows. It shows detailed information of movies and tv s

null 2 Dec 3, 2022
GithubUserApps is an application that can Search and Displaying the details of a User github

GithubUserApps is an application that can Search and Displaying the details of a User github. this apps is written in Kotlin with MVVM Architecture, RXJava3, Kotlin Coroutines, ROOM Database, Retrofit, and Data Store Preferences to saving the Dark/Light Theme Key-Value.

Joshua Jeremia 2 Aug 31, 2022