One card. Everyone signs.

A group card the whole office, team or group chat signs in their own hand. Pick a design, add their name, send one link. I designed it, built it, and wrote a little risograph press in code to draw the cards.

  • RoleDesign, code, cards
  • BuiltSept 2026
  • Runs onCloudflare Workers
  • StatusLaunched Oct 3, 2026

A card everyone signs, in their own handwriting, from one link, with a private link for the person it's for.

Somebody's retiring, somebody's having a baby, somebody's moving across the country. Somebody has to get everyone's name on one card. That's signaround.

You pick a design, type who it's for, pay once, and drop one link in the group chat. Everybody taps an empty spot and signs it with a finger or a mouse. No sign-up to sign, no app to download. When signing's done, the person it's for gets their own private link, and the card shows up in an envelope.

The part I cared about most: it's your actual handwriting. Not your name in a cute font. So the whole product is built around one thing, the signature.

"The signing and opening process should feel very special and personal, and a touch fun."
My note to self, the day I scrapped the first signing pad and started over.

How it works

Four steps. One of them is the fun one.

  1. 1

    Choose a design

    Pick a look and tell it who it's for and what for. Birthdays, farewells, thank-yous, the lot.

  2. 2

    Pay once

    One card, unlimited signers. Add photos, voice messages or glitter if you like.

  3. 3

    Send the link

    Everyone picks an empty spot on the card and signs it with a finger or a mouse.

  4. 4

    Deliver it

    Close signing and send them their private link. The card opens, and there everyone is.

Step 3, up close

Go on. Sign it.

This is signaround's real pen, ported into this page: the same four implements, the same ink passes, the same grain. Everyone else already signed. Your spot's saved.

Happy Birthday, Katie
Sam Have the best day!!
Priya Another year brighter.
Coach Dee
Ana & Theo You're one in a melon.
Walter
Yours Sign on the pad
Maya Look at you go.
Jordan Cake. Break room. 3pm.
Saved for whoever's next
Otis
Saved for whoever's next
Lou Happy birthday, boss.
Ink

Ballpoint. A fine, certain line.

The pad needs JavaScript. The real one at signaround.com does too, sorry.

  • Four tools, one description. A crayon is five passes over the same stroke: two solid ones for the body of the wax and three broken ones riding on top. The live canvas and the stored SVG both draw from that one recipe, so it's a crayon on the pad, on the card, and in Katie's copy.
  • Grain that never changes. The wobble comes from seeded noise, not Math.random. A signature keeps the exact same texture forever, every time it's drawn.
  • A pen that keeps up. Raw pointer input is jittery. A One Euro filter smooths a slow, careful hand and gets out of the way of a quick one, and the line passes through every point, so the corners of your "M" stay corners.

Step 4, up close

Then it goes to the one it's for.

No 3D library for the envelope. It's four flat planes (back, card, pocket, flap) moved by the browser's own 3D, and the card really does pass in front of the pocket on its way out. There's exactly one sound on the whole card: a paper rustle, timed to when the flap breaks the seal rather than when you tap. Then the card itself opens in three.js, lit like an actual object.

You only get the ceremony once per card. Somebody coming back to fix their name isn't owed two and a half seconds of theater.

  1. 1The flap peels off the seal.
  2. 2The card slides out of the pocket.
  3. 3It opens, and there everyone is.

The designs

In their favorite color.

A few days in, looking at the first batch of covers, it hit me: they're SVGs. What if every card could wear the recipient's favorite color, without redrawing a thing? That felt like the selling point.

It could. At build time every colored fill in a cover becomes a CSS variable with its original color as the fallback. Pick a color and each ink keeps its lightness but swings its hue next to yours, so the art stays readable. Paper, outlines and dark lettering never move. Try it.

Whale Miss You: a smiling whale with a heart spout
Farewell
You're One in a Melon: a dancing watermelon slice
Birthday
Thanks a Latte: a steaming mug
Thank you
Holy Guacamole: a cheering avocado
Congrats
Look Whooo's Here: two owls on a branch
New baby
Two Peas in a Pod
Wedding
Hope You Feel Butter Soon: a slice of toast with butter
Get well
Happy Birthday under a bunch of balloons
Birthday
204 covers in all. 132 of them printed in code. 48 of those are secret.

The press

A risograph, written in code.

The first batch of covers came out of an image generator. For the next batch I tried something else: instead of generating art, print it. A risograph prints one spot ink at a time: the paper goes through once per color, each pass lays down flat, slightly starved ink, and the drum never lands in quite the same place twice. press.mjs is that machine in SVG.

Paper is noise.
Two turbulence filters, fine fiber and slow blotch, multiplied over the stock.
Ink is a filter chain.
Displacement pushes every edge off true, more noise wanders the density and eats small voids out of it.
Registration drifts.
Each pass is nudged a few units and turned a fraction of a degree.
Overprint is multiply.
Two inks make a third where they cross, for free.

Nothing is traced or fetched. The words are measured off the font's real kerning and turned into outlines, and the source for a cover averages about 12 KB.

You're Pretty Rad(ish): a radish in sunglasses, printed in teal and pink

The small stuff

Party on the front. Plumbing on the back.

Secret cards

48 of the covers are hidden.

signaround's homepage has a "Perfect for your…" strip of 24 groups, from bowling leagues to robotics teams. Every bubble hides two cards. Tap one and it's found, with confetti, and it shows up on the create page under Specialty. It's a game, not a lock.

D&D groupMom gangBirdwatching societyPickleball crewLab partnersKaraoke crewBook club
You're Right Up Our Alley: a bowling ball rolling into pins
Found one: You're Right Up Our Alley

Always room for one more

The card grows a ring at a time as people sign, so there's always an empty one outside the last signature. No limit on signers.

Dibs

25 minutes

Tap an empty square and it's held for you while you sign. Two people can't both win the same one; the database gets the last word.

For their eyes

Notes are for everyone. Photos and voice notes are for Katie.

Anyone with the signing link can read the card, so the photos and voice messages (up to 60 seconds) only come back for a request carrying the recipient's key. Even the person who just uploaded a photo gets it back as a blank.

Pay once

$4 a card

Unlimited signers. Photos +$2 (GIFs ride along), voice messages +$2, glitter's free. Checkout is Stripe's.

Under the hood

Small stack. Lots of paper.

  • Sept 10first commit
  • ~3½ wksto opening day
  • 1runtime dependency
  • 0frameworks

Cloudflare Workers

The whole app is one Worker with a hand-written router, serving plain HTML, CSS and JavaScript. No React, no Tailwind, no build step for the Worker.

D1

Cards, orders, signatures and spot holds. Signatures are point arrays, a few KB of JSON each, drawn as SVG.

R2

Photos and voice messages, filed per card. Anything not attached to a signature within the hour gets swept.

Stripe Checkout

Webhook signatures are verified by hand, so there's no SDK to bundle. The return trip double-checks with Stripe too.

three.js

Only the slice the 3D card uses, and only loaded when a card actually opens.

Email + Better Auth

Cloudflare Email Service sends the organizer their links. Magic-link sign-in lets them find every card later. Signers never see an account.

Where it's at

Somebody deserves a card today.

signaround is open. It launched Saturday, October 3. Head to signaround.com, pick a design, start a card, tell the group chat.

signaround.com
Up next · Party game Bidiocy Best thy buddies' bestiary.