This Kotlin-based Android application showcases popular movies and TV series using modern Android development practices. It follows the MVVM pattern and Clean Architecture principles.
- Features
- Project Structure
- Technologies Used
- Libraries Used
- Screenshots
- Installation
- Usage
- Contributing
- License
- Copyrights
- Browse popular movies and TV series.
- Filter by popular, top-rated, upcoming, and now playing.
- Horizontal lists for categories such as popular and upcoming movies.
- Swipe horizontally on the main screen through categories.
- View detailed information about each movie or TV show.
- Dynamic loading of more results with swipe.
- Clean and modular code following MVVM and Clean Architecture.
- Save favorite movies and TV shows.
- View saved favorites, tv series or movies.
Architecture The project follows the principles of Clean Architecture, focused on separation of concerns and maintainability. https://developer.android.com/topic/architecture
It's organized into the following layers:
- app: Contains the main activity and UI components.
- build-logic: Gradle configurations and dependencies. This approach is heavily based on https://developer.squareup.com/blog/herding-elephants/ and https://github.com/jjohannes/idiomatic-gradle.
- common: Common utilities and foundational classes.
- common-ui: Common UI components and extensions.
- data: Responsible for interacting with external data sources like networks or local databases using repositories and data sources.
- domain: Contains the business logic and use cases of the application.
- Kotlin, Coroutines & Flow, Hilt, Retrofit, MVVM.
- Retrofit: A type-safe HTTP client for Android and Java.
- Epoxy: A library for building complex RecyclerView layouts.
- Coil: An image loading library for Android backed by Kotlin Coroutines.
- Hilt: A dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
- Mockk: A mocking library for Kotlin.
- Clone the repository:
git clone https://github.com/toaderandrei/popular-movies-kt.git
- Open the project in Android Studio and sync with Gradle.
- Obtain an API key from The Movie Database (TMDb) and add it to
local.properties
:tmdb_api_key=YOUR_API_KEY
- Run the application on an Android device or emulator.
- Browse through the list of popular movies and TV shows.
- Tap on any item to view detailed information.
UI inspired from TIVI app. https://github.com/chrisbanes/tivi
Contributions are welcome! Please fork, create a feature branch, commit changes, and submit a pull request.
MIT License
(c) 2024 Andrei Toader-Stanescu
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.