Awesome
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 š
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 š¤
- š¤ Icons are from flaticon.com
- šļø Design inspired from AnimeXStream
- š½ Data from top250 API
- š Thanks Foodium
TODO šļø
- Improve algorithms and code review
- Add test cases
- Integrate OMDB API to add search feature
- Add favorites
Author āļø
- theapache64