Troves β A modern, cross-platform eCommerce application built with Kotlin Multiplatform.
Troves delivers a seamless, native-like shopping experience on both Android and iOS from a single shared codebase. It integrates deeply with the Shopify API via Apollo GraphQL for a rich product catalog, offers multiple payment solutions including Paymob and Shopify Checkout Sheet Kit, and features an intelligent AI Shopping Assistant powered by Google Gemini. A dedicated AI Recommendation Engine β "Your Troves" β surfaces hyper-personalized product suggestions on the home screen, learning each user's taste in real time. From browsing and favoriting to map-based delivery and secure checkout, Troves is a full end-to-end shopping platform.
- Kotlin Multiplatform + Compose Multiplatform for Android & iOS
- Shopify API (via Apollo GraphQL & Ktor REST) for product catalog, cart, and orders
- Google Gemini + Cloudflare Workers for the AI Shopping Assistant & Your Troves recommendation engine
- Firebase Auth (GitLive KMP SDK) for cross-platform authentication
- Supabase Edge Functions / Webhooks for payment orchestration
The Home screen is the app's main landing surface. It provides a personalized, data-driven shopping feed with dynamic sections to guide users toward products and brands they will love.
Note
- Ad Slider: A full-width promotional banner carousel for campaigns and featured collections.
- Brands Rail: Horizontally scrollable brand logos with real Shopify smart-collection imagery.
- Your Troves β¨: AI-powered personalized product rail β see the dedicated section below.
- Categories Rail: Visual category chips with real Shopify collection images for quick navigation.
- Trending Now: A curated product rail showcasing the most popular items.
- All feed sections are fetched concurrently (
async/await) so the screen loads in the time of the slowest source. - Shimmer skeleton loading states while data is being fetched.
- Real Shopify images loaded via Coil 3 with design-system drawable fallbacks.
Your Troves is the intelligent heart of the home screen. Powered by Google Gemini via a Cloudflare Worker backend, it analyzes each user's behavior, favorites, browsing history, and purchase patterns to surface a hyper-personalized product feed β unique to every shopper.
Note
- Behavior-aware: Recommendations adapt in real time based on what the user browses, likes, and purchases.
- Powered by Google Gemini: The AI model evaluates product attributes, user history, and preferences to rank and select the most relevant items.
- Cloudflare Worker Backend: A lightweight, serverless inference layer that keeps the recommendation pipeline fast and scalable β no cold-start latency for the user.
- Displayed prominently on the Home screen under the "Your Troves" heading so it's the first personalized content a returning user sees.
- Each suggested product card links directly to the full Product Details screen.
- Refreshes automatically as the user's in-app activity evolves β no manual input required.
- New or guest users see a curated default selection (e.g., trending or top-rated items) until enough signal is gathered.
- All personalization logic runs server-side β no raw user data is sent to third-party model providers beyond anonymized behavioral signals.
Explore rich product information, browse variants, manage your wishlist, and add to cart β all from a polished, native-feeling detail screen.
Note
- Full product title, description, images, and price display.
- Variant selection (size, color, etc.) with real-time price updates.
- Star ratings and customer reviews section.
- Add or remove products from Favorites (wishlist) β requires authentication.
- Add to Cart action with auth gate: guests are prompted to sign in to continue.
A complete, multi-step checkout experience that supports multiple payment methods and integrates deeply with Shopify's order management.
Note
- Add, remove, and update quantities for items in the cart.
- Cart is linked to the authenticated user's Shopify account via Apollo GraphQL.
- Real-time cart total and item count updates.
- Paymob Integration: Card-based payments orchestrated via Supabase Edge Functions / Webhooks, which create the corresponding Shopify order upon successful payment.
- Shopify Checkout Sheet Kit: Native payment sheet for both Android and iOS.
- Cash on Delivery (COD): Available as a payment option.
- Select or add a delivery address using the integrated Mapbox map.
- Automatic camera animation to the user's current location.
- Address management from the user profile.
An intelligent, conversational shopping assistant powered by Google Gemini, backed by a serverless Cloudflare Worker, to help users discover products and get shopping advice.
Note
- Chat with the AI assistant to get product recommendations, compare items, and get styling advice.
- Powered by Google Gemini with a Cloudflare Worker backend for serverless inference.
- Chat history persisted locally so conversations are preserved across sessions.
- Ask the assistant questions in natural language (e.g., "Find me a red jacket under $50").
- Responses guide users directly to relevant product detail screens.
Troves uses a guest-first approach. Users can browse freely without being forced to log in, only being prompted when they attempt a protected action.
Note
- First-launch Onboarding flow shown once per device, then skipped on subsequent launches.
- Onboarding completion state persisted via DataStore.
- Login & Register: Secure account access powered by Firebase Auth (GitLive KMP SDK).
- Guest Mode: Browse the entire catalog without an account. Auth is only required for cart, checkout, favorites, and profile.
- Auth Gate: A shared
requireAuthmechanism β when a guest triggers a protected action, an alert prompts them to "Sign up to continue" or "Cancel". - Logout: Sign out from the current device.
- View and manage personal information.
- Manage saved delivery addresses.
- Browse order history and track past purchases.
- Access saved Favorites (wishlist).
- Multi-language: Arabic and English support.
- Multi-theme: Dark & Light mode switching.
Application structure built with a modular Clean Architecture approach, enabling team scaling and clear separation of concerns.
ββββββββββββββββββββββββββββββββββββββββββββ
β androidApp β
β (Android Entry Point) β
ββββββββββββββββββββ¬ββββββββββββββββββββββββ
β depends on
ββββββββββββββββββββΌββββββββββββββββββββββββ
β shared β
β (Wires all modules + Koin DI) β
ββββββ¬βββββββββββββββ¬βββββββββββββββββ¬ββββββ
β β β
βββββββββββββΌβββ ββββββββββΌββββββββ ββββββΌβββββββββββββββββ
β presintation β β data β β designSystem β
β (MVI/UI/Nav) β β (Ktor/Room/API)β β (Compose UI Kit) β
βββββββββ¬βββββββ ββββββββββ¬ββββββββ βββββββββββββββββββββββ
β β
ββββββββββββ¬ββββββββ
β depends on
ββββββββββββΌββββββββ
β domain β
β (UseCases/Entitiesβ
β /Repositories) β
ββββββββββββββββββββ
- Jetpack Navigation 3 (androidx.navigation3)
- Lifecycle ViewModel Navigation 3
- Material3 Adaptive Navigation 3 (CMP)
- Apollo GraphQL (Kotlin) β Shopify Storefront API
- Ktor Client (Android, Darwin) β REST API calls
- Apollo Normalized Cache (SQLite)
- Paymob Android SDK β Card payments via Supabase webhook orchestration
- Shopify Checkout Sheet Kit (Android) β Native checkout sheet
- Google Gemini β AI Shopping Assistant model
- Cloudflare Workers β Serverless AI backend
- Supabase Edge Functions β Payment webhook orchestration
- Kermit (KMP Logging)
- BuildKonfig β Build-time config injection
Before you begin, ensure you have met the following requirements:
-
Android Studio
- Download Android Studio (latest stable recommended)
- Kotlin Multiplatform plugin installed
-
Xcode (for iOS development only, requires a Mac)
-
API Keys & Config Files (see Installation)
-
Clone the repository:
git clone https://github.com/YOUR_USERNAME/Troves.git cd Troves -
Add your
google-services.json(Android) toandroidApp/andGoogleService-Info.plist(iOS) toiosApp/for Firebase Auth. -
Add your API keys and secrets to
local.properties:# Shopify SHOPIFY_STORE_DOMAIN=your-store.myshopify.com SHOPIFY_ACCESS_TOKEN=your_storefront_api_token # Mapbox MAPBOX_ACCESS_TOKEN=your_mapbox_token # Gemini / Cloudflare AI Backend GEMINI_API_KEY=your_gemini_api_key CLOUDFLARE_AI_WORKER_URL=https://your-worker.workers.dev # Paymob PAYMOB_API_KEY=your_paymob_api_key
-
Sync the project in Android Studio and run it.
Android App:
./gradlew :androidApp:assembleDebugOr simply run the androidApp configuration in Android Studio.
iOS App:
Open the iosApp directory in Xcode and run, or use the iosApp run configuration in Android Studio (requires a Mac).
# Android host tests (unit tests)
./gradlew :shared:testAndroidHostTest
# iOS simulator tests
./gradlew :shared:iosSimulatorArm64TestCopyright 2025 Troves
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.




