Skip to content

danponce/eMovie

Repository files navigation

eMovie Application Challenge

Kotlin Version AGP Gradle

eMovie is an Android application that provides information of movies. The goal of this app is to show some movies from TheMovie DB servers showing the "Upcoming" and "Top Rated" movies. When pressing any movie you can watch the details of it.

Developed with

Architecture

  • This project was developed using CLEAN Architecture and MVVM (Model View ViewModel)
  • It uses Single Source of Truth principle so that all data from API is stored in Room DB. This way we see our database as the SSOT and we listen for changes related with this data source of the app
  • The architecture contains the following features:
    • data:

      • remote: Using Retrofit (REST API) and OkHttp (Security and interceptors)
        • Contains all the logic for getting movie data from API including mappers, models and others
        • Repository implementation that links with domain layer
      • local: Using Room DB
        • Contains all the logic for creating the RoomDB Instance, Entities and Daos.
        • Repository implementation that links with domain layer
    • domain: Intermediate layer between data and presentation. We manage the business logic in this layer using the proper abstraction to establish link between ui and data layer

    • ui: This contains the models and the different fragments related to home, detail and favorite screens

    • di: Contains logic of Dependency Injection using Dagger Hilt, separating the scopes for any layer and the ViewModel.

    • utils: Some tools related with general utilities used through the entire app

Screenshots

Extra functionalities

  • Swipe Refresh Layout in the list
  • ic_launcher for eMovie logo
  • Favorite movies
  • Filter recommended movies with language and release year options
  • Expandable/Collapsable Toolbar in detail screen
  • Splash Screen API from Jetpack

About

A movie app using Clean Architecture, SSOT, Room, Compose, Dagger Hilt and other cool stuff

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages