Halloween Invite (A Party Invite That Keeps Its Secrets)

Halloween Invite (A Party Invite That Keeps Its Secrets)

Oct 2026

TL;DR

I'm throwing a Halloween karaoke night in Prague and wanted the invite to be part of the fun. I used it as a playground for four experiments: guest-only access, playful UI, how far an AI app builder can get on its own, and running the whole backend on free tools. It went from idea to live in 4 days.

The Experiment

A party invite is a tiny product with real stakes: it handles names, phone numbers, venues and money, and a single forwarded link can leak all of it. I wanted to test four things:

Privacy & gating. Can a link-based invite stay private without asking guests to make an account?

Delight. Can an RSVP make people smile instead of feeling like a form?

Lovable vs Claude Code. How far does an AI app builder go before I need to take over the code?

Cost. Can it run without paying for anything new - no backend bill, no new domain?

What I Tried

Started in Lovable, finished in code. Lovable gave me the first version in an afternoon. I then moved the code to my machine and continued with Claude Code and Codex, which handed work to each other through a shared notes file.

Google Sheets as the backend. Instead of paying for a database, every RSVP and payment goes to a Google Sheet through a small Apps Script, and a same-site proxy keeps that address hidden from the browser.

A custom domain without buying one. The invite first lived on a free vercel.app address, which looked like a test page. Instead of paying for a new domain, I gave it a subdomain of the one I already own - halloween.shaunteles.com - so it feels like a real product and costs nothing extra.

Gating in layers. Guests get in with the last 4 digits of their phone number, and two wrong tries lock the browser. Venues stay blurred until I confirm their payment - the real address isn't even sent until then. Search engines and AI bots are blocked.

Invite gate asking for the last 4 digits of the guest's phone number
Code
Halloween invite with a glowing pumpkin and the guest's first name
Invite
Three-act evening schedule with blurred venue names
Locked venues
The way in: a phone-digit code, the invite itself, and venues that stay blurred until payment is confirmed.

Delight in small places. One-tap RSVP, a live countdown, a three-act night (1st bar → karaoke → 2nd bar), and a "Sadly, no" button that runs away from your finger.

RSVP with I'll be there and Sadly, no buttons side by side
Before
The Sadly, no button has jumped to a different spot on the screen
After
"Sadly, no" before (left) and after you try to tap it (right).

Live at halloween.shaunteles.com - guests need a code to get in.

What Happened

4 days
From idea to live invite
€0
Monthly backend bill
3
AI tools - Lovable, Claude Code, Codex
5
Privacy layers - code, lockout, blurred venues, hidden backend, bot blocking

What Broke

The first gate was too strict. The browser lock caught guests who had their own personal link, so I narrowed it to visits from the shared link only.

The joke button had to be tuned. "Sadly, no" first dodged too slowly to be funny, then it escaped off the screen. It took two rounds to get the timing right.

Hiding the code broke the site. Scrambling the page code so people couldn't snoop broke the live build, and automated checks for the backend proxy came out of the fix.

My own folder fought me. The project wouldn't run locally because of an apostrophe in the folder name, and builds failed inside Dropbox.

Scope got cut. The song-request, notes and "which part are you coming to?" fields all went. Every field I removed made the RSVP faster.

What I Learned

  • —AI builders are a fast first draft, not a finish line. Lovable got the look and flow right in hours, but the privacy rules and the money logic needed me in the code.
  • —Make the most of what you already have before paying for something new. A Google Sheet is plenty for 12 guests, and a subdomain of my own site gave the invite a proper address for free.
  • —Delight needs tuning like any other feature. A joke that's too slow or breaks the layout stops being a joke, so I tested the dodging button as seriously as the payment step.
Back to Portfolio
Experiment 1/1