Inspiration

The idea for BiteShuffle started with a familiar problem: my friends and my girlfriend often could not decide what to eat. Instead of making the decision easier, talking through every option usually created even more indecision.

One day, my girlfriend sent me a video of a small device with a turning mechanism that rotates cards and reveals a random food suggestion. That simple idea sparked BiteShuffle. I wanted to recreate the fun and surprise of that physical device as a mobile experience, while adding appetizing illustrations, mascot reactions, tap or shake interactions, and the ability to save and revisit food picks.

What it does

BiteShuffle gives users an instant food idea through a tap or shake-to-shuffle interaction. Each reveal features an appetizing food illustration, a playful mascot reaction, and a short description.

The catalogue includes Filipino, Japanese, Korean, Chinese, and drink options across breakfast, lunch, dinner, snacks, and desserts.

Users can also:

  • Filter results by cuisine and meal type with Guided Random
  • Avoid immediate and recent repeats
  • Save favorite dishes
  • Revisit shuffle history
  • Share their food pick
  • Enjoy mascot reactions, animations, haptics, and confetti during reveals

How we built it

BiteShuffle was built as a native iOS app using SwiftUI and Swift 5.

The app uses:

  • SwiftUI for the interface and animations
  • Swift Observation for lightweight app state
  • A curated, searchable in-memory food catalogue
  • RevenueCat for premium entitlement handling
  • TipKit for onboarding guidance
  • Swift Testing and XCTest for unit and UI coverage

The core shuffle logic prioritizes dishes that have not appeared recently while ensuring that a small filtered catalogue never gets stuck without a valid result.

Challenges we ran into

One challenge was making randomness feel useful rather than repetitive. A completely random result can repeatedly show the same dish, so we added recent-result avoidance while preserving a fallback for small filtered pools.

We also had to coordinate several pieces of state: the current dish, filters, favorites, history, mascot mood, animations, haptics, and premium access. Keeping these behaviors predictable required separating the shuffle logic, persistence layer, purchase state, and presentation views.

Another challenge was making the food catalogue feel curated and culturally familiar while still supporting a broad range of cuisines.

Accomplishments that we're proud of

We are proud that BiteShuffle turned a simple randomizer into a recognizable product experience. The food card, illustration, mascot reaction, animation, and soundless haptic feedback work together as one complete reveal moment.

We also built a polished end-to-end flow with:

  • Tap and shake interactions
  • Cuisine and meal filters
  • Recent-repeat avoidance
  • Favorites and history
  • Shareable food cards
  • Premium feature gating
  • A catalogue grounded in Filipino and Asian food culture

The app is intentionally lightweight and can provide food inspiration without requiring restaurant listings, delivery integrations, or a complex account system.

What we learned

We learned that small interactions can make a functional tool feel much more memorable. The illustration and mascot are not just decoration; they give the random result personality and make users want to shuffle again.

We also learned that randomness needs gentle structure. Avoiding recent repeats and allowing users to guide the result with filters creates a better balance between surprise and control.

Finally, we learned the importance of designing persistence and premium access early, because favorites, history, and gated features affect the entire user experience.

What's next for BiteShuffle

Next, we want to expand the catalogue, improve personalization, and explore additional shuffle modes based on mood, budget, dietary preferences, and group decision-making.

We also plan continue refining the food illustrations, and test which parts of the reveal experience most strongly encourage users to return. Android release is being considered.

Our long-term goal is for BiteShuffle to become the fastest and most delightful way to answer one everyday question: “What should I eat?”

Built With

  • ios
  • revenuecat
  • swift
  • swift-observation
  • swiftui
  • tipkit
  • userdefaults
  • xcode
  • xctest
Share this project:

Updates

Submission history