theapache64 / topcorn

A minimalistic movie listing app to browse IMDB's top 250 movies, built to demonstrate MVVM with latest hot-trending Android development tools.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

title GitHub issues GitHub forks GitHub stars GitHub license Twitter

light_screenshots

TopCorn 🍿

A minimalistic movie listing app to browse IMDB's top 250 movies, built to demonstrate MVVM with latest hot-trending Android development tools.

Dark Mode Available πŸŒ™

dark_screenshots

Download πŸ“₯

  • Download latest APK from here

Built With πŸ› 

  • Kotlin - First class and official programming language for Android development.
  • Coroutines - For asynchronous and more..
  • Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • LiveData - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • ViewBinding - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
    • Room - SQLite object mapping library.
  • Dagger 2 - Dependency Injection Framework
  • Retrofit - A type-safe HTTP client for Android and Java.
  • Moshi - A modern JSON library for Kotlin and Java.
  • Moshi Converter - A Converter which uses Moshi for serialization to and from JSON.
  • Glide - An image loading library for Android backed by Kotlin Coroutines.
  • Material Components for Android - Modular and customizable Material Design UI components for Android.
  • TwinKill - A simple library, a collection of utility classes wrapped around JetPack components
  • MaterialColors - Android material color palettes

Architecture πŸ—Ό

This project follows the famous MVVM architecture and best practices from Google's GithubBrowserSample

Project Structure πŸ“‚

.
β”œβ”€β”€ App.kt
β”œβ”€β”€ data
β”‚   β”œβ”€β”€ local
β”‚   β”‚   β”œβ”€β”€ AppDatabase.kt
β”‚   β”‚   β”œβ”€β”€ Converters.kt
β”‚   β”‚   β”œβ”€β”€ daos
β”‚   β”‚   β”‚   └── MoviesDao.kt
β”‚   β”‚   └── entities
β”‚   β”œβ”€β”€ remote
β”‚   β”‚   β”œβ”€β”€ ApiInterface.kt
β”‚   β”‚   └── Movie.kt
β”‚   └── repositories
β”‚       └── movies
β”‚           └── MoviesRepo.kt
β”œβ”€β”€ di
β”‚   β”œβ”€β”€ components
β”‚   β”‚   └── AppComponent.kt
β”‚   └── modules
β”‚       β”œβ”€β”€ ActivitiesBuilderModule.kt
β”‚       β”œβ”€β”€ AppModule.kt
β”‚       β”œβ”€β”€ DatabaseModule.kt
β”‚       β”œβ”€β”€ NetworkModule.kt
β”‚       β”œβ”€β”€ RepoModule.kt
β”‚       └── ViewModelModule.kt
β”œβ”€β”€ models
β”‚   └── FeedItem.kt
β”œβ”€β”€ ui
β”‚   β”œβ”€β”€ activities
β”‚   β”‚   β”œβ”€β”€ feed
β”‚   β”‚   β”‚   β”œβ”€β”€ FeedActivity.kt
β”‚   β”‚   β”‚   └── FeedViewModel.kt
β”‚   β”‚   β”œβ”€β”€ movie
β”‚   β”‚   β”‚   β”œβ”€β”€ MovieActivity.kt
β”‚   β”‚   β”‚   └── MovieViewModel.kt
β”‚   β”‚   β”œβ”€β”€ splash
β”‚   β”‚   β”‚   β”œβ”€β”€ SplashActivity.kt
β”‚   β”‚   β”‚   └── SplashViewModel.kt
β”‚   └── adapters
β”‚       β”œβ”€β”€ FeedAdapter.kt
β”‚       └── MoviesAdapter.kt
└── utils
    β”œβ”€β”€ BindingAdapters.kt
    β”œβ”€β”€ NetworkBoundResource.kt
    β”œβ”€β”€ retrofit
    β”‚   β”œβ”€β”€ FlowResourceCallAdapterFactory.kt
    β”‚   └── FlowResourceCallAdapter.kt
    └── test
        β”œβ”€β”€ EspressoIdlingResource.kt
        └── OpenForTesting.kt

21 directories, 30 files

Credits πŸ€—

TODO πŸ—’οΈ

  • Improve algorithms and code review
  • Add test cases
  • Integrate OMDB API to add search feature
  • Add favorites

Author ✍️

  • theapache64

About

A minimalistic movie listing app to browse IMDB's top 250 movies, built to demonstrate MVVM with latest hot-trending Android development tools.

License:Apache License 2.0


Languages

Language:Kotlin 100.0%