Skip to content

theapache64/topcorn

Repository files navigation

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.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages