Live on Sui Testnet · Sui Overflow 2026

Birthday wishes,
forever on-chain.

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

For Maria's 30th

0x540a…2dfb

The flow

Three signatures.
One unforgettable moment.

01

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.

02

Friends drop wishes

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.

03

Reveal together

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

No servers. No vendor lock-in. Just open protocols.

S

Sui Object Model

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.

W

Walrus Storage

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
// 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,
    });
}
Package · 0x01d4…a3d9View on Suiscan →