Skip to content

MoviesBox is an android application having followed most of the latest Android Architecture Components, RxAndroid, Dagger2, Retrofit, MVVM Architecture, Clean Architecture, Data Binding, View Binding

License

Notifications You must be signed in to change notification settings

DevAnuragGarg/MovieBox

Repository files navigation

MoviesBox 🎥 👏 😎


An android phone application 📱 showing movies 📹 related stuff. The main focus of the app is to design and integrate the latest new features/recommendations provided/changes released by Google. The app follows MVVM with Clean architecture. Follow me at Anurag Garg to get all the new updates. 👍

License API Build Status License Code Quality


Screenshots

Releases

Go to the Releases to download the latest APK.

Architecture

Contents

  • Minimum SDK level 21

  • 100% Kotlin based

  • JetPack: BEHAVIOR

    • Notifications - added notifications for the application when clicked on upcoming movies
  • JetPack: FOUNDATION

  • JetPack: ARCHITECTURE

    • Data binding - used in detail screen and home screen
    • LiveData - notify domain layer data to views.
    • ViewModel - UI related data holder, lifecycle aware.
    • View Binding - removed butter knife, kotlin synthetic, findViewById
    • Room - persistence library, database
    • Work Manager - work manager to show notifications after fetching data from server
  • DESIGN PATTERNS

    • MVVM Architecture (View - DataBinding - ViewModel - Model)
    • Repository pattern
    • Clean Architecture with SOLID principles
  • Material Design & Animations

  • Dagger2 - dependency injection

  • Retrofit2 & Gson - constructing the REST API

  • OkHttp3 - implementing interceptor, logging and mocking web server

  • Picasso - loading images throughout the app

  • Timber - logging library added

  • Navigation Drawer - Added the left navigation drawer menu

  • RxAndroid

  • Localization -String and drawable localization for Hindi language

  • Binding Adapter - functions to bind the customized value

  • DiffUtil - implemented DiffUtil for the data in the recyclerview

  • Dark Theme - implemented dark theme at home page

  • AndroidX Using latest versions of JetPack libraries

  • Toast - Customized toast with Gravity

  • Support In-App Updates

  • CircleCI - for continuous integration

  • Mockito - writing test cases for all the modules by mocking the objects

  • [Espresso]

TODOs

  • making the status bar transparent in movie detail screen
  • Work manager for cleaning up the database at particular time
  • showing image in the work manager notification
  • pagination for all the recycler views
  • Handling of error scenarios
  • latest dagger changes
  • Make api calls as per the language selected
  • implementing popular and trending movies section
  • left navigation item click implementation
  • sealed classes for checking data received and transfer to UI
  • implementation of similar movies in movie detail screen
  • writing test cases for all the modules and having maximum code coverage
  • https://www.androidhive.info/2020/01/viewpager2-pager-transformations-intro-slider-pager-animations-pager-transformations/

License

Designed and developed by 2020 devanuraggarg (Anurag Garg)

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.

Releases

No releases published

Packages

No packages published

Languages