ARShades — Overview
ARShades is an iOS application (Swift + SwiftUI) that delivers real-time AR eyewear try-on, product exploration, and lightweight CRM touchpoints. The app ships with an App Clip for instant “try before install” via deep links.
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.
- 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 App Clip, full app, and web deep links 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: Acts as the main consumer touchpoint for eyewear try-on.
- Bridge between web and mobile: Deep links connect marketing/web experiences to the App Clip and 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 App Clip and enabling immersive try-on, ARShades accelerates user decisions and brand engagement.
Ecosystem
Core pieces
- iOS App (full experience): AR try-on, catalog browsing, favorites, facial metrics, notifications, legal, contacts, skin tone picker.
- App Clip (instant entry): lightweight try-on for a single product/variant from a link.
- Deep Links / Universal Links: user-facing URLs that open either the App Clip or the full app.
- Firebase: source of truth for catalogs, products, variants, and paginated product feeds.
Capabilities & entitlements
- Associated Domains
applinks:safilo.arshades.itapplinks:spaarkly.page.linkappclips:safilo.arshades.it
- Background Modes: Remote notifications ✅
- App Groups:
group.arshades.appClipMigration(data sharing between App & App Clip) - Signing: Team
Spaarkly srl, Bundleit.spaarkly.ARShades-demo
Entry flows
1) App Clip flow (no app installed)
- User taps a WebVTO link, e.g.:
https://www.webvto.it/?c={catalogueId}&m={VariantId} - The system launches the App Clip.
- Parameters:
c= catalogueId (the catalog the variant belongs to)m= variantId (the exact SKU/variant to show immediately)
- The App Clip fetches minimal data for that
catalogueIdandvariantIdand opens straight into Try-On for a frictionless demo.
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 a deep 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
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) 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.
- Shared storage: App & App Clip exchange small items (e.g., acceptance flags, last variant) via the App Group.