Inspiration

The best part of sharing a photo with a friend is seeing their face when they see it. Messaging apps skip that moment: you send, they look, and you get a "lol" ten minutes later. The iPhone Duo gave us a physical gesture that feels like opening a letter, and we wanted the unfold to be the reveal.

What it does

  • A friend sends you a Peek, a photo hidden behind a blurred, darkened card.- You reveal it by physically unfolding your iPhone Duo As the hinge opens, the photo sweeps into view, sharpens and brightens in step with the fold angle. A softhaptic fires when the device starts to open, and the reveal completes only when the Duo is fully open.- While you unfold, the front camera records your reaction, so the moment you see the photo is captured.- On the sender side, Your Peek shows each friend who opened it; tap a friend to replay their reaction.- A Friends tab lets you manage who you share with. Peek Plus, a subscription built on RevenueCat, is set up as the premium tier. ## How we built it- SwiftUI on iOS 27.1 with Xcode 27.1 beta, using the Observation framework and a NavigationStack for the inbox, reveal and reactions flows.- iPhone Duo hinge API: a DuoPostureService reads DeviceHingeContext. The hinge angle drives the reveal animation, and the fold status (closed, partially open,fully open) decides when the reveal counts as complete. - AVFoundation:a ReactionCaptureService runs a front-camera AVCaptureSessionand records the reaction with AVCaptureMovieFileOutput. RevenueCat SDK:* a SubscriptionService configures Purchases, loads the currentoffering, watches the plus entitlement through the customer info stream, and exposes purchase and restore.- Bitrig's 3D iPhone Duo simulator let us test fold states before we had hardware.- Liquid Glass*styling across buttons and surfaces.

Challenges we ran into

  • Making the reveal feel physical: the hinge angle is continuous, but "revealed"needs to be a firm moment. We use the angle for the animation and the discrete fold status as the final say.- Testing without the device: simulators have no camera, so we built a simulated reaction preview and a fallback that fakes unfolding, keeping the whole flowtestable.
  • Keeping the team in sync: several people were pushing UI changes at once, so webuilt the subscription layer on a separate branch and merged it without touching the screens. ## Accomplishments that we're proud of
  • The unfold-to-reveal interaction genuinely could not exist on a regular phone.
  • A clean architecture: posture, camera capture and subscriptions are each their own service, and the UI just watches them.
  • RevenueCat connects end to end and loads a live offering with a monthly package.

What we learned

  • How to design around fold states and hinge angles instead of screen taps.
  • That the physical gesture itself can be the product.
  • How to integrate RevenueCat entitlements and offerings in a SwiftUI app using the Observation framework.

What's next for Peek

  • Real sending and receiving between devices, with reaction videos synced to a backend.
  • Using the outer display so the closed Duo shows "Aish sent you a Peek" and invites you to unfold.
  • A Peek Plus paywall unlocking longer reaction clips, group Peeks and custom reveal effects.

Built With

Share this project:

Updates

Submission history