A clone of Warby Parker app in Android built using Jetpack compose.
🛑 Disclaimer: This project is solely for my own learning purposes, I do not intend to break any laws and privacy terms in regards to the actual Warby parker app or company. 🛑
This is a jetpack compose sample app written in Kotlin following clean architecture principles.
The purpose of this app to showcase:
- Clone the current iOS Warby Parker app for Android
- Implementation of Jetpack Android Architecture components with Dagger Android and Data Binding to minimize boilerplate code
- Creation of proper components and Subcomponents using Dagger Android and their injection into Activity, Compose Views, View Models and Helper Classes
- Performing background task with Kotlin Coroutines
- Use Jetpack compose Animations!
- Use CameraX and ARCore libraries to implement face augmented reality!
What | How |
---|---|
🎭 User Interface (Android) | Jetpack Compose |
🏗 Architecture | MVVM |
💉 DI (Android) | Hilt |
🌊 Async | Coroutines + Flow |
👨💻 Google SceneForm | Sceneform |
🌐 Networking | Retrofit |
📄 Parsing | KotlinX |
Demo 1 | Demo 2 | Virtual Try On! |
---|---|---|
![]() |
![]() |
![]() |
Home | Eyeglasses | Filter |
---|---|---|
![]() |
![]() |
![]() |
Details | Contacts | Favourites |
---|---|---|
![]() |
![]() |
![]() |
Account | Login | Cart |
---|---|---|
![]() |
![]() |
![]() |
- Business logic should not be intertwined with the UI code
- UI-based classes should only contain logic that handles UI and operating system interactions
- The (view) model is responsible for handling data for the UI
- The (view) model should not be affected by the app's lifecycle and configuration changes
Repository Pattern (https://martinfowler.com/eaaCatalog/repository.html)
- Repositories to be mediators between different data sources
- A repository pattern approach will provide a clean API to retrieve data easily from single or multiple access points. (network, local storage, etc..)
- Kotlin
- AndroidX libraries
- Android Architecture Components
- Android Data Binding
- Dagger 2
- Retrofit
- Kotlin Coroutines