Skip to content

The Movie BD : Android πŸ“±, iOS πŸ“± and wearOS ⌚ application built with Kotlin Multiplatform, Compose Multiplatform with MVVM, Clean Architecture recommended by Google

License

Notifications You must be signed in to change notification settings

joebutler2/the-movie-db

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

The Movie DB (Compose Multiplatform)

Compose Multiplatform Platform Android Platform iOS Platform wearOS Kotlin GitHub license GitHub ibenabdallah

The Movie DB app using The Movie DB built with Kotlin Multiplatform & Compose Multiplatform.

Platform Supports πŸ“±

  • Android πŸ“±
  • iOS πŸ“±
  • WearOS ⌚
  • TV πŸ“Ί (in progress)

Built With πŸ› 

  • Android Studio - Android Studio is the official Integrated Development Environment (IDE) for Android app development.
  • XCode - Xcode 15.2 includes everything you need to develop, test, and distribute apps across all Apple platforms.
  • Kotlin Multiplatform Mobile - The Kotlin Multiplatform technology, to use it you must integrate the following plugins plugin
  • Compose Multiplatform - Compose Multiplatform, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces.
  • Navigation Compose - Compose Multiplatform Navigation
  • Lifecycle Viewmodel Compose - Model-View-ViewModel architecture components for mobile (android & ios) Kotlin Multiplatform development.
  • kotlinx.serialization - Kotlin multiplatform / multi-format reflectionless serialization
  • Coroutines - For asynchronous and more.
  • Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
  • Ktor Client - Ktor includes a multiplatform asynchronous HTTP client, which allows you to make requests and handle responses.
  • Koin - Koin a pragmatic lightweight dependency injection framework for Kotlin & Kotlin Multiplatform.
  • Coil3 - An image loading library for Android backed by Kotlin Coroutines for Kotlin Multiplatform.
  • Paging - A library that adds additional Kotlin Multiplatform targets to AndroidX Paging, and provides UI components to use Paging on iOS.
  • Kermit - Kermit is a Kotlin Multiplatform centralized logging utility
  • BuildKonfig - Supports embedding values from gradle file.

ℹ️ Please note, I used some libraries which are not yet in stable version, this remains as an example of a project to gain expertise on new technologies.

Architecture 🧰

The app architecture has three layers : a data layer, a domain layer and a UI layer.

I followed the Guide to app architecture by google.

Also I applied the SOLID principles

Project structure 🏹

The project follows the standard Kotlin Multiplatform structure, with the following notable files and directories, that targeting Android, iOS, wearOS and TV (in Progress).

  • uiCompose Contains the project code common.

    • src/commonMain This is a Kotlin module that contains the UI common for both Android and iOS applications, the code you share between platforms. This shared module is also where you write your Compose Multiplatform code. In uiCompose/src/commonMain/kotlin/AppScreen.kt, you can find the shared root @Composable function for your app. It uses Gradle as the build system. You can add dependencies and change settings in uiCompose/build.gradle.kts. The shared module builds into an Android library and an iOS framework..
    • src/androidMain Contains the Android-specific code and specific configuration files.
    • src/iosMain Contains the iOS-specific code and specific configuration files.
  • data This is the network layer module.

  • domain This is the logic layer module.

  • model This is the module that contains the models of the ui layer.

  • androidApp Contains the android-specific configuration files.

  • iosApp Contains the iOS-specific configuration files.

  • wearOS Contains the wearOS-specific code ui and specific configuration files.

  • build.gradle.kts The main Gradle build script for the project.

Getting Started πŸ› 

  1. Clone this repository to your local machine.

    git clone https://github.com/ibenabdallah/the-movie-db.git
    
  2. Open the project in Android Studio.

  3. Set up your Android and iOS device/emulator/simulator.

  4. You must create an account on the site The Movie DB to create a key afterwards, then set up the local.properties file in the project's root directory (if it doesn't already exist) by adding the following properties :

api_key=<YOUR TMDB API KEY>
  1. Build and run the project.

Run project on Different Platforms πŸš€

Android

To run the application on android device/emulator:

  • open project in Android Studio and run imported android run configuration

To build the application bundle:

  • run ./gradlew :androidApp:assembleDebug
  • find .apk file in androidApp/build/outputs/apk/debug/androidApp-debug.apk

iOS

To run the application on iPhone device/simulator:

wearOS

To run the application on android device/emulator:

  • open project in Android Studio and run imported android run configuration

To build the application bundle:

  • run ./gradlew :wearOS:assembleDebug
  • find .apk file in wearOS/build/outputs/apk/debug/wearOS-debug.apk

Contributing ✍️

Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request. Please ensure that your contributions adhere to the project's coding style and guidelines.

Contributors πŸ“’

License πŸ—’οΈ

This project is licensed under the MIT License.

Connect with me πŸ€·β€β™‚οΈ

About

The Movie BD : Android πŸ“±, iOS πŸ“± and wearOS ⌚ application built with Kotlin Multiplatform, Compose Multiplatform with MVVM, Clean Architecture recommended by Google

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 99.3%
  • Swift 0.7%