Skip to content
← All work

Mochi Cafe App

A rewards system that's actually fun to use

A self-directed project: an ordering and loyalty app for a fictional boba cafe, built to explore how playful reward mechanics change repeat behavior.

Client
Personal project
Industry
App / Reward system
My role
Lead Designer — brand, product design, illustration
Mochi Cafe app home screen with the streak ring and mochi bits balance beside the level-up celebration screen

Impact at a glance

  • End-to-end

    Brand, app, and reward system

  • Streaks

    Daily mechanic driving return visits

  • Levels

    Progression with real, unlockable perks

The work

Mochi bits, streaks, and levels

The home screen leads with a streak ring and a personal greeting, so progress is the first thing you see. Points became "mochi bits" — a named currency with a character attached, which makes the balance feel like something rather than a number.

Ordering stays boring on purpose: size, quantity, add to cart, pickup time. Playfulness belongs in the reward layer, not the transaction.

  • StreaksDaily progress ring with a visible next milestone.
  • RewardsTiered unlocks at 25% and 50% toward a free drink.
  • LevelsCelebration moment with exclusive sticker rewards.

Brand

A full style guide, because loyalty is brand

I built a complete identity — primary and secondary logos, background variants, a warm five-color palette, Montserrat and Karla type pairing, and button states — so the app feels like one place instead of a set of screens.

Mochi Cafe brand style guide with primary and secondary logos, color palette, type pairing, and button styles

Outcome

A reward loop worth returning to

The result is a full concept — brand guide, ordering flow, checkout, reward scanning, redemption, and level-up states — designed as a system rather than a portfolio mockup.

View the Figma prototype
Mochi Cafe rewards screen, redeem reward confirmation, and the merch store

What I'd take forward

Every playful element had to survive one question: does this make someone come back tomorrow? To answer that properly I'd need real behavior, so next time I'd build the streak and reward loop as a working prototype and run it with a small group over two weeks. I'd also design the empty and broken-streak states first.