Valentine's Day Proposal
A joke with a build step. The No button runs away; the Yes button ends it.
Sole developer · Feb 2026
The form is the joke. It looks like every other club RSVP, deliberately plain and with no hearts anywhere, so the reveal has something ordinary to land against. The only part with real logic is the rejection loop. All the animation is CSS, and the whole thing went up the same day; most of the late commits were arguments with GitHub Pages about which folder to publish.
The rejection loop
The No button holds still for the first click, which shakes the screen and shows a message. After that it starts dodging on hover, offset by a random amount that scales with the number of refusals so far and caps at a fixed maximum. From about the fifth refusal it disappears entirely for a couple of seconds, which is where most people stop testing it. Everything else is a form and a fade. The RSVP page collects name, email, major, year, phone and a fun fact, drops a hint about Saturday once a year is picked, then runs a fake loading screen over a blurred second page before blacking out. The proposal fades in on the black screen using the first name from the form. Yes triggers a confetti burst and a celebration screen.