ARShades — Overview
ARShades is an Android application (Kotlin) that delivers real-time AR eyewear try-on, product exploration, and lightweight CRM touchpoints. The Android experience can be invoked directly from Android App Links and can optionally expose an Instant experience (Play Instant) for “try before install”.
Philosophy
The philosophy of ARShades is centered on accessibility, immersion, and seamless user experience:
- Accessibility: Enable users to try eyewear instantly without friction, even if the app is not installed (via Instant experience when available).
- Immersion: Use AR and 3D technologies to bring a lifelike experience of eyewear fitting directly onto the user’s face.
- Seamlessness: Integrate the flow between Android App Links, the Instant experience, and the installed app so the user’s journey feels continuous.
- Scalability: Structure the app to handle multiple brands, large catalogs, and evolving product lines without major architectural changes.
- Privacy by design: Store only what’s necessary, respect user consent, and handle sensitive data (facial metrics, preferences) securely.
Role within the ARShades ecosystem
ARShades plays a core role in the larger ARShades ecosystem:
- User-facing entry point: Main consumer touchpoint for eyewear try-on on Android.
- Bridge between web and mobile: Android App Links connect marketing/web experiences to the Instant experience and the full app.
- Brand showcase: Each brand catalog is distributed through ARShades, ensuring consistent AR quality and unified UX.
- Data integration hub: Pulls structured product, variant, and catalog data from Firebase, synchronizing with other ARShades services.
- Conversion driver: By reducing friction with Instant experiences and enabling immersive try-on, ARShades accelerates user decisions and brand engagement.
Ecosystem
Core pieces
- Android App (full experience): AR try-on, catalog browsing, favorites, facial metrics, notifications, legal, contacts, skin tone picker.
- Instant experience (optional): lightweight try-on for a single product/variant launched from a link (Google Play Instant).
- Android App Links: user-facing URLs that open the installed app or Instant experience.
- Firebase: source of truth for catalogs, products, variants, and paginated product feeds.
Platform integrations & capabilities
- Android App Links / Digital Asset Links
- Verified links mapped from
https://www.webvto.it/?c={catalogueId}&m={variantId}(and brand domains as configured). - Domain verification via Digital Asset Links JSON hosted on the domains.
- Verified links mapped from
- Notifications: FCM (Firebase Cloud Messaging) for remote notifications.
- Play App Signing: managed signing; separate debug/release keystores for development.
- Data sharing: Installed app uses SharedPreferences/Room (or equivalent) for local state. Instant experience (if enabled) uses intent parameters and cloud state; once installed, state continues seamlessly in the full app.
Entry flows
1) Instant experience (no app installed; if enabled)
- User taps a WebVTO link, e.g.:
https://www.webvto.it/?c={catalogueId}&m={variantId} - The system launches the Instant experience.
- Parameters:
c= catalogueId (the catalog the variant belongs to)m= variantId (the exact SKU/variant to show immediately)
- The Instant experience fetches minimal data for that
catalogueIdandvariantIdand opens straight into Try-On for a frictionless demo, with a CTA to install the full app.
2) Full app flow (app installed)
- Splash Screen → performs lightweight setup.
- If Privacy Policy / Terms not accepted → present PP/T&C gate.
- Brands screen → after user picks a brand, navigate to Try-On.
- When launched from an App Link with
candm:- Parse
catalogueId = c,variantId = m. - From Firebase:
- Load catalogue by
catalogueId. - Load variant by
variantId. - Resolve the product that owns this variant.
- Fetch sibling variants (other colors/sizes of the same product).
- Fill the product carousel with additional products from the same catalogue (paginated, 30 products per page).
- Load catalogue by
- Open Try-On focused on the requested variant; the carousel is prefilled and extends as the user scrolls.
- Parse
No deep link: On cold start without a link, the app loads AppConfig from Firebase to determine which catalogues are visible for this build, shows Brands, and on selection opens Try-On (first 30 products).
Deeplink catalogue not in AppConfig: Persist the
catalogueIdlocally (e.g., Room/SharedPreferences) so it appears on Brands in future sessions.
Domain model
- Catalogue → contains many Products.
- Product → contains one or more Variants (colorways, sizes, etc.).
- Variant → concrete, try-on-ready item (the AR asset & metadata shown first).
Navigation model
- Pre-main flow: Splash → PP/T&C (if needed) → Brands → Try-On
- Main (Side-Menu or Drawer) pages:
- Try-On (default post-brand)
- 3D Viewer
- Brands
- Catalogue
- Favorites
- Facial Metrics
- Choose Skin
- Notifications
- Legal
- Contacts
Performance & UX notes
- Paginated fetch: product carousel queries in batches of 30 for consistent memory and snappy scrolling.
- Cold-start resilience: App can render Try-On with just the requested variant, then hydrate siblings and carousel progressively.
- State continuity: Instant → full app handoff preserves context via link parameters and cloud data; installed app retains small state locally.