Thanks to visit codestin.com
Credit goes to github.com

Skip to content

🎬 An android app for exploring movies using the movie database API Implemented by Clean Architecture, MVVM, Compose, Coroutines, Flow, Hilt, Jetpack(Paging3, Room, Datastore)

License

Notifications You must be signed in to change notification settings

seosh817/MovieHub

Repository files navigation

MovieHub

Platform API Build Status License


🎬 An android app for exploring movies using the movie database API Implemented by Clean Architecture, MVVM, Compose, Coroutines, Flow, Hilt, Jetpack(Room, Datastore)



Tech-stack

preview

  • Kotlin - is a modern and pragmatic programming language developed by JetBrains. It is fully interoperable with Java and widely adopted for Android app development.
  • Asynchronous:
    • Coroutines - Kotlin's coroutine library simplifies asynchronous programming and enhances concurrency management.
  • Networking:
    • Retrofit - A type-safe HTTP client library for Android and Java, facilitating easy and efficient RESTful API calls.
    • OkHttp - An HTTP client library often used in conjunction with Retrofit for networking tasks.
  • Serialization:
    • Kotlinx Serialization - Kotlinx Serialization is a Kotlin library that provides a powerful and flexible way to serialize and deserialize Kotlin data classes.
  • Image loading:
    • Coil - An image loading library for Android, designed to be lightweight and efficient in handling image processing tasks.
  • Jetpack:
    • Compose - A modern UI toolkit for declaring UI components in a declarative manner.
    • Lifecycle - A tool for handling actions related to the app's lifecycle changes.
    • ViewModel - Used to store and manage UI-related data in a lifecycle-aware way.
    • Paging3 - A tool for managing pagination in large datasets.
    • Room - An ORM library built on SQLite for handling local databases.
    • Datastore - A modern data storage library for data management.
  • Architecture:
    • MVVM(Model-View-ViewModel)
    • Android Architecture components - A set of libraries providing architecture components for Android app development.
    • Android KTX - Kotlin extensions for Android app development, enhancing Kotlin usage convenience.
  • Dependency Injection:
    • Hilt - A dependency injection library for Android apps, providing a simple and efficient approach based on Dagger.
  • Protocol buffers - protobuf is a method developed by Google for serializing structured data, similar to XML or JSON. It is designed to be more efficient and compact than traditional serialization formats.
  • Testing:
    • JUnit4 - JUnit4 is a unit testing framework for Java and Kotlin. It is used to write unit tests for business logic or utility methods in Android apps.
    • Robolectric - Robolectric is a unit testing framework for Android. It provides a simulated Android environment for testing, allowing you to run tests on Android framework-dependent code without the need for a real Android device or emulator.
    • Espresso - Espresso is a testing framework for Android UI tests. It is used to test the behavior of user interfaces by interacting with UI elements and verifying the outcomes.
  • Static analysis tools:
    • Detekt - A tool for static analysis of Kotlin code, verifying code complexity and searching for code smells.
    • Spotless - A code formatter and verifier tool to keep your code clean and consistent.
  • Gradle:
  • Dependency versions:
  • Continuous Integration:
    • GitHub Actions - A CI tool provided by GitHub for automating workflows.

ScreenShots

Video Playback(Picture-in-Picture) Dark(Light) theme

Project Configuration

Setting up the API Key

This project requires The Movie Database (TMDB) API key to access external APIs. Follow the steps below to configure the API key:

  1. Create a local.properties file in the project root directory.

  2. Add the TMDB_API_KEY to the local.properties file as shown below:

    TMDB_API_KEY=your TMDB_API key
  3. Build and run the project.

TODO

  • Offline-first caching
  • Add localization support (Korean, English, Japanese)
  • Add dark and light theme support
  • Implement video playback using YouTube IFrame API
  • Add support for PIP(Picture-in-Picture) in video player

Inspiration

This project is developed with inspiration from the The Movies2 project.

License

Copyright 2024 seosh817 (Seunghwan Seo)

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.

Contribution

Feel free to file an issue if you find a problem or make pull requests.
All contributions are welcome 😁

About

🎬 An android app for exploring movies using the movie database API Implemented by Clean Architecture, MVVM, Compose, Coroutines, Flow, Hilt, Jetpack(Paging3, Room, Datastore)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages