Inspiration

Part of the inspiration for Oinkle came from a deeply touching moment in Toy Story 5. Jessie discovers a lunchbox buried beneath the tree where Emily's childhood tire swing once hung. The lunchbox belongs to Emily's daughter, who was also named Jessie in honor of the cowgirl doll her mother once loved.

That scene stayed with us because it captures something quietly true about growing up: our younger selves often hide away the things they treasure, hoping those memories might find us again someday—and perhaps even help us heal. Often, they do.

Yet most of our memories now disappear into an endless camera roll. They are technically preserved, but they rarely feel treasured, and we seldom rediscover them at the moment we need them most.

We wanted to create something more personal and tangible: a digital keepsake with weight, history, and emotional value. That idea became Oinkle(拾光币), an iOS memory bank where people transform photographs, dates, and handwritten notes into collectible coins.

The most important relationship in Oinkle is not only between friends, but also between a person's past and future selves. A younger version of you can mint a memory, leave behind a few words, and place it inside a piggy bank. Someday, your future self may shake it out and rediscover exactly what the younger you hoped you would remember.

Instead of endlessly scrolling through the past, Oinkle turns remembering into a small ritual:

Mint a coin. Save it with care. Let time pass. Receive it again when it has become something new.

What it does

Oinkle transforms a photograph, date, and personal message into a two-sided collectible memory coin.

Users can:

Take a photo or select one from their library.

Crop, reposition, and scale the image inside an ornamental coin.

Write a personal note for their future self.

Preview and flip the coin before saving it.

Drop the finished gold coin into an animated piggy bank.

Shake the iPhone or tap the piggy to retrieve old memories.

Browse collected coins chronologically in a private album.

Flip each coin to revisit its message and minting date.

Optionally synchronize private data through the user's own iCloud account.

Oinkle also offers two nearby experiences.

Piggy-bank exchange is mutual. Two people bring the tops of their iPhones together, build a small wooden bridge across the devices, confirm the connection, and exchange piggy banks. Each person then shakes the friend's piggy bank and receives one eligible memory coin.

In-person gifting is one-way. A user chooses one of their own coins, brings their phone near a friend's phone, and both people confirm the gift. The original leaves the sender only after the recipient has safely received it.

Coins created by the owner are gold. Coins received from friends become silver and enter the Friends section of the collection album. They never enter the recipient's personal piggy bank.

How we built it

Oinkle is a native iOS application built primarily with SwiftUI.

The coin system uses a reusable renderer that combines photographs, decorative relief, messages, dates, and material-specific color palettes. A custom interaction supports both tapping and directional dragging to flip the coin. Perspective, visible thickness, face-state management, and material-aware edge lighting make gold and silver coins feel like physical objects rather than flat images.

The main app uses a local-first ownership model. Each coin records its creator, origin, ownership state, collection date, sharing eligibility, transfer identity, and whether it is still inside the piggy bank.

Nearby exchange and gifting use separate state machines because their product rules are fundamentally different. We used:

MultipeerConnectivity for encrypted peer discovery and data transport

NearbyInteraction for proximity-aware interactions between physical iPhones

CoreMotion for shake detection

CloudKit for optional private synchronization

WidgetKit for the home-screen widget

App Groups to share data between the app, widget, and Photos share extension

Transfers use identifiers, content hashes, acknowledgements, duplicate detection, and recovery journals. The sender's original coin is removed only after the recipient validates and safely stores the transfer.

We developed Oinkle through a close collaboration with Codex, powered by GPT-5.6. We made the central product, emotional, visual, and interaction decisions. Codex accelerated implementation by helping us understand the codebase, translate detailed feedback into SwiftUI changes, diagnose connection and gesture issues, integrate visual and audio assets, and rebuild and install new iterations on two physical iPhones.

Our workflow was highly iterative:

We tested the app on physical devices.

We documented issues with screenshots and detailed interaction notes.

Codex inspected the relevant implementation and identified the underlying cause.

We decided the desired product behavior and visual direction.

Codex implemented the change and checked connected features for regressions.

We rebuilt and tested the result on both iPhones.

GPT-5.6 was especially helpful when a small product decision affected many connected systems. For example, defining a friend coin as silver also affected its ownership state, album category, gifting eligibility, piggy-bank eligibility, rendering, transfer acknowledgement, and detail-page presentation.

This human-directed, AI-accelerated process allowed us to spend more time refining the emotional experience while still implementing technically complex device-to-device interactions.

Challenges we ran into

One of our biggest challenges was making digital coins feel tangible. Early versions looked like flat images. We iterated on perspective, thickness, edge visibility, shadows, gesture sensitivity, drag direction, and animation state until flipping felt controlled and physical.

Nearby transfer was another major challenge. A successful interaction requires two devices to discover each other, establish an encrypted connection, determine their roles, confirm proximity, receive confirmation from both users, transfer and validate the data, persist it, and acknowledge completion before deleting the sender's original.

Asynchronous callbacks created subtle race conditions. In one case, a transfer completed successfully, but a delayed disconnection callback produced a false failure message. We solved this by scoping every callback to the correct active session.

We also discovered that technical correctness was not enough. A bridge could connect mathematically and still appear to have a visual gap. A menu could render correctly but have an unreliable hit area. A silver coin could show a gold edge for a fraction of a second and break the ownership metaphor. Much of the work involved finding and correcting these small inconsistencies.

Accomplishments that we're proud of

We are especially proud that Oinkle combines emotional clarity with meaningful technical depth.

We created:

  • A distinctive hand-drawn visual language
  • Personalized, two-sided memory coins with interactive metallic depth
  • A physical-feeling piggy-bank ritual using motion, sound, and haptics
  • A mutual exchange flow represented by a wooden bridge between two phones
  • A separate, secure one-way gifting flow
  • Reliable ownership transfer with acknowledgements and recovery handling
  • Clear visual provenance through gold and silver coin materials
  • A private, account-free experience without public social pressure
  • Optional private iCloud synchronization
  • A widget and Photos share extension
  • A workflow that was repeatedly tested on two physical iPhones

Most importantly, the final product still feels simple. The technology remains behind the experience of receiving a small message from a younger self or a meaningful memory from a friend.

What we learned

We learned that emotional products require unusually precise interaction design. Small visual details can communicate ownership, trust, permanence, and care.

We also learned to model product meaning directly in the data. A friend coin should not merely look silver; its provenance, transfer rules, album category, and piggy-bank eligibility must all agree with that meaning.

Testing on physical devices was essential. Motion, haptics, proximity, touch targets, animation timing, and perceived scale could not be judged reliably in the simulator.

Our collaboration with Codex also taught us how to use AI effectively in product development. The strongest results came when we supplied clear intent, screenshots, constraints, and direct feedback while retaining responsibility for the final decisions. Codex then accelerated the repetitive implementation, investigation, and validation work.

What's next for Oinkle

Next, we would like to:

  • Add more collectible coin frames and seasonal piggy-bank designs.
  • Prepare Oinkle for TestFlight and App Store release.
  • Explore meaningful coin collections for milestones, friendships, travel, and family memories.
  • Collaborate with unique destinations and institutions to create exclusive coin designs for in-person collections.
  • Improve accessibility, including VoiceOver descriptions and motion alternatives.
  • Expand private backup and transfer recovery testing.
  • Continue refining nearby interactions across more iPhone models and environments.

Our long-term vision is for Oinkle to become a quiet emotional companion: a place where memories are not simply stored, but deliberately crafted, patiently saved, and lovingly rediscovered.

Built With

Share this project:

Updates