設計 Lucky Duck:把獎勵平台 MVP 當成一種成長函數
設計 Lucky Duck:把獎勵平台 MVP 當成一種成長函數
獎勵產品難的不是再做一個商城,而是建立足夠的動能,讓人真的願意回來。Lucky Duck 是一個可點擊、行動優先的消費者獎勵與會員平台 MVP 概念——從設計到前端工程一手完成,就是為了證明這件事。
你可以在這裡試玩互動原型。這篇文章是它背後的故事。
問題:留存,而不是再一個目錄
畫一堆漂亮的畫面很容易,難的是做出一個「每個畫面都值得使用者點下一步」的流程。獎勵產品的成敗取決於習慣養成——所以設計的問題不是「目錄長什麼樣?」,而是「明天什麼會把人帶回來?」
所以我拒絕設計彼此無關的畫面。相反地,每個畫面都必須對應到一個真實的成長迴圈。
做法:讓畫面對應到迴圈
我把整個體驗圍繞四個核心迴圈來設計:
- 獲取(Acquisition)——一個吉祥物主導、用一句話講清楚承諾的 Landing:Play More. Win More. Get More.
- 啟用(Activation)——低摩擦註冊,立即開通點數錢包,加上一鍵錢包設定與迎新點數。
- 參與(Engagement)——獎勵探索:精選優惠、分類與熱門選項,每個都附上透明的中獎機率。
- 留存(Retention)——由收藏、等級與近期中獎組成的個人作品集,給人回來的理由。
再加上一個把全部串起來的時刻:慶祝——彩帶與吉祥物的瞬間,讓每次中獎都覺得值得。
當畫面對應到迴圈,產品設計就不再只是表面裝飾,而成為一種成長函數。
設計系統:用 token,不是一次性畫面
一個無法規模化的原型,證明不了什麼。所以 Lucky Duck 跑在一小組 token 上,而非客製化的單張畫面:
- 顏色——Primary Yellow(
#FFD600)、Deep Purple(#6C3CFF)、Success Green(#22C55E),以及一套深色表面色,全部以單一的Palette抽象表達,並有淺色與深色兩種變體。 - 字體——重量級的標題字重用在關鍵時刻,平穩的內文字重用在清晰閱讀。
- 元件——按鈕、膠囊標籤、進度條與卡片到處重用,讓新功能能快速上線又維持品牌一致。
因為整個 demo 都從同一組 palette 讀取,淺色與深色得以同步——改一次 token,每個畫面都跟著變。
實作:跑在真實技術棧上的原型
這不是扁平的設計稿,而是一個跑在「產品實際上線會採用的同一套技術棧」上的可運作原型:
- Astro 負責快速的靜態頁面,
- 一個 React island 承載互動 demo,
- Framer Motion 處理畫面轉場與慶祝動畫,
- Tailwind CSS 做 token 驅動的樣式。
有幾個值得一提的工程細節:
- 沒有主題閃爍。 demo island 以
client:only掛載,在第一次 render 就讀取當前主題,所以深色模式的訪客不會看到淺色配色閃一下。 - 顏色的單一真實來源。 畫面狀態機由單一的
Palette物件驅動,淺色/深色不會走鐘。 - 乾淨的後端交接。 前端刻意解耦——付款、點數與機率引擎的交接,對後端工程師來說保持乾淨。
為什麼這樣行得通
獎勵產品是一個披著「目錄問題」外衣的「留存問題」。透過讓每個畫面對應到成長迴圈、把視覺建立在可重用的設計系統上、並做出真正可點擊的原型,Lucky Duck 同時展現了產品思維與工程實作——而不只是一個靜態的點子。
👉 打開互動原型 →,並切換網站主題,並排看看淺色與深色兩套設計系統。
Try the prototype
The full primary flow, right here — create an account, claim a reward, and watch it land in your portfolio. Toggle the site theme to see the light and dark design systems.