Giter Site home page Giter Site logo

teja84625 / youtube-clone-kmp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from khubaibkhan4/youtube-clone-kmp

0.0 0.0 0.0 104.9 MB

Youtube clone using Kotlin Multiplatform. It supports the Android,iOS, Web and Desktop Application.

License: GNU Affero General Public License v3.0

JavaScript 0.09% Kotlin 99.72% Swift 0.10% HTML 0.09%

youtube-clone-kmp's Introduction

YouTube Clone Kotlin Multiplatform

YouTube Clone KMP

Overview

YouTube Clone KMP is a sophisticated project developed using Kotlin Multiplatform (KMP), enabling the creation of versatile applications across Android, iOS, Web, and Desktop platforms with shared code. This comprehensive YouTube clone mirrors the functionalities of the official YouTube app, offering a seamless user experience across various devices.

๐Ÿš€ Key Features

  • Cross-Platform Compatibility
  • Video Playback
  • Sharing Options
  • Download Capability
  • Playlist Viewing
  • Comprehensive Search
  • Video Detail
  • Trending Videos
  • Subscribe Channels
  • View Verified Channel Badges
  • Offiline Video Support
  • **Smooth Interation **
  • Responsive UI
  • Material Design Components

๐Ÿ”ฅ Additional Features

  • Top Videos
  • Shorts Videos
  • Video Details
  • Channel Screen
  • Channel Home
  • Live Streams
  • Community
  • Playlists
  • Channel Details Screen
  • Share Channel, Videos, and Shorts
  • Like and Comment Features
  • Download Videos
  • Relevance Videos
  • Subscriptions
  • Library
  • Shimmer Loading Screen
  • Top Categories
  • Navigation Rail for Foldable Devices
  • Desktop and Web Version Support

๐Ÿš€ Future Plans

  • TV and Wear OS Versions

๐ŸŒŸ Contributions

Feel free to contribute to the project and stay tuned for more exciting updates!

Open To Work

Tech Stack Highlights

  • Kotlin Multiplatform: 1.9.22
  • AGP (Android Gradle Plugin): 8.2.2
  • Compose: 1.5.12
    • androidx-appcompat: 1.6.1
    • androidx-activityCompose: 1.8.2
    • compose-uitooling: 1.6.1
    • composeImageLoader: 1.7.1
    • composeIcons: 1.1.0
  • Core Libraries: 12.1.0
  • Kotlinx Libraries:
    • kotlinx-coroutines: 1.7.3
    • kotlinx-serialization: 1.6.2
    • kotlinx-datetime: 0.5.0
  • Networking:
    • coilNetwork: 3.0.0-alpha01
    • ktor: 2.3.7
  • Dependency Injection:
    • koin: 3.5.0
  • UI/UX:
    • compose-uitooling: 1.5.4
    • composeIcons: 1.1.0
  • Media Handling:
    • media3Ui: 1.2.0
    • media3ExoplayerDash: 1.2.0
    • media3Exoplayer: 1.2.0
  • Logging:
    • napier: 2.6.1
  • Database/Storage:
    • libres: 1.2.2
  • Web and Networking:
    • webview-kmp: 1.8.0
  • JSON Parsing:
    • gson: 2.10.1
  • Build Configurations:
    • buildConfig: 4.1.1
  • Cross-Platform Image Loading:
    • composeImageLoader: 1.7.1
  • Size Measurement:
    • size: 0.3.1
  • Voyager Navigation: 1.0.0
  • Other Utilities:
    • moko-mvvm: 0.16.1
    • vlcj: 4.7.0
    • ffmpegPlatform: 4.1-1.4.4
    • kamelImage: 0.9.0
  • JavaFX: 22-ea+16

๐Ÿ“ Getting Started To use the app, follow these steps:

  1. Create YouTube API V3 credentials.
  2. Add the credentials to composeApp/src/commonMain/kotlin/org/company/app/utils.

Feel free to reach out if you have any questions or need further assistance!

Connect with me to discuss potential projects, job opportunities, or any other collaboration.

๐Ÿค Connect with Me

Let's chat about potential projects, job opportunities, or any other collaboration! Feel free to connect with me through the following channels:

LinkedIn Twitter Email

If you find my work helpful, you can support me by buying me a coffee.

Download Installers

Screen Shots

Screenshot 1 Screenshot 2 Screenshot 3
Screenshot 4 Screenshot 5 Screenshot 6
Screenshot 7 Screenshot 8 Screenshot 9
Screenshot 10 Screenshot 11 Screenshot 12
Screenshot 13 Screenshot 14 Screenshot 15
Screenshot 16 Screenshot 17 Screenshot 18
Screenshot 19 Screenshot 20 Screenshot 21
Screenshot 22 Screenshot 23 Screenshot 24
Screenshot 25 Screenshot 26 Screenshot 27
Screenshot 28 Screenshot 29 Screenshot 30
Screenshot 31 Screenshot 32 Screenshot 33
Screenshot 34 Screenshot 34 Screenshot 34

Desktop Screen Shots

Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
Screenshot 7
Screenshot 8
Screenshot 9
Screenshot 10
Screenshot 11
Screenshot 12
Screenshot 13
Screenshot 14
Screenshot 15
Screenshot 16
Screenshot 17
Screenshot 18
Screenshot 19
Screenshot 20
Screenshot 21
Screenshot 22
Screenshot 23
Screenshot 24
Screenshot 25
Screenshot 26
Screenshot 27
Screenshot 28
Screenshot 29
Screenshot 30
Screenshot 31

Before running!

  • check your system with KDoctor
  • install JDK 17 on your machine
  • add local.properties file to the project root and set a path to Android SDK there

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 :composeApp:assembleDebug
  • find .apk file in composeApp/build/outputs/apk/debug/composeApp-debug.apk

Desktop

Run the desktop application: ./gradlew :composeApp:run

iOS

To run the application on iPhone device/simulator:

Browser

Run the browser application: ./gradlew :composeApp:jsBrowserDevelopmentRun

Create Native Distributables

Android

  • to create .apk file for the Andorid. We simply need to 'build > Build Bundles > Build APK'.

Desktop

  • to create Native Distributable for the Desktop Windows, MacOS, Linux. We need to follow the procedure.

  • 'First of all following inside the 'build.gradle.kts' ' compose.desktop { application { mainClass = "MainKt"

      nativeDistributions {
          targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
          packageName = "org.company.app.desktopApp"
          packageVersion = "1.0.0"
          description = "YouTube Clone Using Kotlin Multiplatform"
          copyright = "ยฉ 2024 Muhammad Khubaib Imtiaz. All rights reserved."
          windows {
              iconFile.set(project.file("src/commonMain/resources/youtube_music.png"))
          }
          macOS {
              iconFile.set(project.file("src/commonMain/resources/youtube_music.png"))
          }
          linux {
              iconFile.set(project.file("src/commonMain/resources/youtube_music.png"))
          }
      }
    

    } }'

  • Now simply run the command 'gradle createDistributable or ./gradlew createDistributable'

JS

  • for the Js Web App, we simply need to execute the 'gradle jsBrowserWebpack'

youtube-clone-kmp's People

Contributors

khubaibkhan4 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.