Work in progress
This is UI Clone of Snapchat, which is used to show the power of Jetpack Compose. This a personal project with the goal to learn Clean Architecture with Jetpack compose. I have tried to add all the native components like Camera, Mapview and Exoplayer and showcase as an example.
Jetpack Compose is Android’s modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs.
- Compose-version: 1.4.0-beta02
Jetpack Compose is Android’s modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs. - Gradle Version: 7.5
- Kotlin Version: 1.8.10
- androidx.navigation:navigation-compose:2.5.3
The Navigation component provides support for Jetpack Compose applications. You can navigate between composables while taking advantage of the Navigation component’s infrastructure and features.
Reference https://blog.mindorks.com/jetpack-compose-navigation
camerax_version = "1.2.1"
- com.google.maps.android:maps-compose:2.1.0, com.google.android.gms:play-services-maps:18.1.0
- References
- androidx.media3:media3-exoplayer:1.0.0-rc01, androidx.media3:media3-ui:1.0.0-rc01
We have several existing media APIs: Jetpack Media also known as MediaCompat, Jetpack Media2, and ExoPlayer. These libraries were developed with different goals, and have several areas of overlapping functionality.
It can be challenging to decide which library to use for a given use case, and objects from different libraries are often not compatible, requiring adapters or connecting code. Media3 removes these challenges by providing a single set of libraries which work well together.
- References
- io.coil-kt:coil-compose:2.2.2
Image loading for Android backed by Kotlin Coroutines. - References
- com.google.accompanist:accompanist-permissions:
0.23.1 , com.google.accompanist:accompanist-pager:0.25.1
Accompanist is a group of libraries that aim to supplement Jetpack Compose with features that are commonly required by developers but not yet available. - References
- org.jetbrains.dokka:dokka-gradle-plugin:1.7.10
Dokka is a documentation engine for Kotlin, performing the same function as javadoc for Java. Just like Kotlin itself, Dokka fully supports mixed-language Java/Kotlin projects. It understands standard Javadoc comments in Java files and KDoc comments in Kotlin files, and can generate documentation in multiple formats including standard Javadoc, HTML and Markdown. - References
- io.gitlab.arturbosch.detekt:detekt-gradle-plugin:
1.18.1
Static code analysis for Kotlin - References
I am still learning and understanding clean architecture so it might be perfectly correct
In Clean Architecture, instead of relying on Models, you'll communicate with Interactors from the
Use Case layer. This layer contains the user interface related code, powered by Android Jetpack!
The outer circle represents the concrete mechanisms that are specific to the platform such as
networking and database access. Moving inward, each circle is more abstract and higher-level. The
center circle is the most abstract and contains business logic, which doesn’t rely on the platform
or the framework you’re using.
Refer here for more details and description:
- https://www.raywenderlich.com/3595916-clean-architecture-tutorial-for-android-getting-started
- https://medium.com/android-dev-hacks/detailed-guide-on-android-clean-architecture-9eab262a9011
- https://medium.com/swlh/clean-architecture-in-android-a-beginner-approach-be0ce00d806b
Awesome! If you want to contribute to this project, you're always welcome! Have any questions, doubts or want to present your opinions, views? You're always welcome. You can mail me at [email protected] or make an issue. Looking for contributors! Don't be shy. 😁 Feel free to open issues/pull requests to help me improve this project.
- When reporting a new Issue, make sure to attach Screenshots, Videos or GIFs of the problem you are reporting.
- When submitting a new PR, make sure tests are all green. Write new tests if necessary.
The Snapchat name, artwork, trademark are all property of Snap Inc. This project is provided for educational purposes only. It is not affiliated with and has not been approved by Snap Inc.