Spin up a plan
Connect your wallet and create a shared Sui object for the birthday person. You get a single invite link to share with everyone.
Spin up a shared surprise plan, invite the whole group, and let everyone sign their birthday wishes directly onto Sui, before sealing the final AI card forever on Walrus.
Free to create · 0.01 SUI per AI collage
Surprise plan · 4 friends
The flow
Connect your wallet and create a shared Sui object for the birthday person. You get a single invite link to share with everyone.
Each contributor writes a personal wish and signs it directly into the Sui plan. Adding a wish is free — friends only pay minimal network gas.
On the big day, open the plan link and watch every wish bloom in a single shared canvas. Nothing to download. Nothing to lose.
Tech stack
Each plan is a shared on-chain object. Every contribution is a signed transaction emitted as an event — auditable, immutable, and instantly readable from any RPC.
AI-generated images are uploaded to Walrus testnet as decentralized blobs. The blob ID is what we store on Sui — so the picture outlives any server.
// surprise_planner.move
public entry fun add_wish(
plan: &mut SurprisePlan,
text: String,
ctx: &mut TxContext
) {
assert!(!plan.is_finalized, ENotEditable);
let contributor = tx_context::sender(ctx);
plan.wishes.push_back(Wish {
contributor, text
});
event::emit(WishAdded {
plan_id: object::id(plan),
contributor,
});
}