Troves is a modern, cross-platform eCommerce application built using Kotlin Multiplatform Mobile (KMM) and Compose Multiplatform. It delivers a seamless, native-like shopping experience on both Android and iOS from a single shared codebase.
- Product Catalog & Management: Browse products, categories, and brands powered by the Shopify API.
- AI Shopping Assistant: An intelligent chat feature powered by Google Gemini (with a Cloudflare backend) to assist users with their shopping experience.
- Cart & Checkout Flow: A complete shopping cart and checkout process.
- Versatile Payment Options:
- Integrated with Paymob for both iOS and Android, utilizing Supabase Edge Functions / Webhooks to orchestrate the payment flow and seamlessly create the corresponding Shopify order.
- Supports Shopify Payment Sheet Kit across platforms.
- Cash on Delivery (COD) available.
- User Profiles: Manage addresses, favorites, and view order history.
- Authentication: Secure user onboarding and login flow.
- Multi-Platform UI: 100% shared UI using Jetpack Compose Multiplatform.
Troves follows Clean Architecture principles and is structured as a Multi-Module Project to ensure scalability, separation of concerns, and maintainability:
domain: Contains the core business logic, entities, and use cases.data: Handles data operations, repositories, and API/Database integrations.presintation: (Presentation) Contains the UI logic, ViewModels, and navigation components.designSystem: A dedicated module for reusable UI components, themes, and styling.shared: The central KMP module that wires up the application logic for both platforms.androidApp: The Android entry point.iosApp: The iOS entry point (consumed as a framework).
- Framework: Kotlin Multiplatform Mobile (KMM)
- UI Toolkit: Compose Multiplatform
- Navigation: JetBrains Navigation Compose
- Dependency Injection: Koin
- Networking: Apollo GraphQL & Ktor Client (for Shopify API and other services)
- Local Storage: Room (SQLite) for database & DataStore for user preferences
- Image Loading: Coil 3
- Logging: Kermit
- Payments: Paymob SDK & Shopify Payment Sheet Kit
- Third-Party Integrations: GitLive Firebase KMP SDK, Supabase Edge Functions / Webhooks
- Android Studio (latest version recommended)
- Xcode (for running the iOS app)
- Kotlin Multiplatform Mobile plugin installed in Android Studio
You can use the run configurations provided by the run widget in Android Studio's toolbar, or use the following commands:
Android App:
./gradlew :androidApp:assembleDebugOr simply run the androidApp configuration in Android Studio.
iOS App:
Open the iosApp directory in Xcode and run it from there, or use the iosApp run configuration in Android Studio/Fleet.
Use the run button in your IDE's editor gutter, or run tests using Gradle tasks:
- Android tests:
./gradlew :shared:testAndroidHostTest - iOS tests:
./gradlew :shared:iosSimulatorArm64Test
Specify your license here.