Halloween
Party
A ticketed children’s party for 100 people, organised by Skelly Event Management — booked on one page, paid by bank transfer with no card fees, and confirmed by the organiser with one press.
One page out front,
a system behind it.
A children’s Halloween party with 100 places at £4 a head needed more than a flyer. Families book on one page, usually from a link in a WhatsApp message. The system counts every person against the room, gives each booking its own payment reference, and lets the organiser confirm a payment with one press. Card fees would have eaten into a £4 ticket, so there are none.
The Event Page
The flyer brought to life: when, where, what’s included and a live count of the places left, designed for a phone first.
Booking Without Card Fees
Each booking gets its own reference to quote on a bank transfer, so every payment can be matched to a family.
A Room That Can’t Oversell
Every adult and child counts against the 100 places, and two families booking at the same moment cannot take the same one.
Waiting List
When the places are gone the button becomes “Sold out” and offers a waiting list that asks only for a name, contact details and how many places.
One-Press Confirmation
The organiser marks a booking paid and the confirmation email goes out by itself.
Door List and Export
A printable arrivals sheet for the night, and every booking as a spreadsheet file.
Privacy Built In
Children’s details sit behind a login, and the organiser erases them after the party with one button.
The flyer,
brought to life.
The page had to look like a party, not a form. A moon, bats, a ghost and a haunted skyline carry the organiser’s flyer onto the screen — a little spooky and a lot of fun, because the audience is small children. It opens with what a parent needs to know: when, where, how much, and how many places are left.
The movement as you scroll is done in CSS alone, with no animation library to download, and it switches off for anyone whose device asks for reduced motion. A screenshot can’t show it: open the live site and scroll. Every question a parent is likely to ask is answered on the page, with the answers always open.
What the ticket includes
Booking, explained in three steps
Every answer open, no accordions
Count the family,
see the price.
The form is deliberately plain: big buttons to count the adults and the children, and the total works itself out — two adults and two children is four tickets, £16. Each child gets a name and an age box, and the allergy question says it is about the children who are eating.
Submitting reserves the places and gives the family a reference to quote on their bank transfer. The page says plainly that a place is confirmed only once the payment has arrived, and that an unpaid reservation may be released after 24 hours.
A hundred places,
never a hundred and one.
The room holds 100 people, and the adults count as well as the children. The risky moment is two families pressing the button at the same instant with three places left.
So a booking is taken as one locked step in the database: the place count, the reference and the booking itself happen together or not at all. In testing, 50 bookings were sent at once for the last 3 places — exactly 3 were accepted, and the rest were told the truth rather than failing silently.
Every person counted
Two adults and two children use four of the 100 places, not one.
One reference per booking
Issued in order and never twice, so a bank payment always matches one family.
Sold out means sold out
At zero the button changes and the waiting list takes over.
A waiting list that asks little
Name, email, mobile and the number of places: nothing about the children until there is a place for them.
Run the night
from one screen.
Behind a login, the organiser sees the whole event: how many places are confirmed, how many are waiting on a payment and how many are left. When a transfer arrives, one press marks the booking paid and sends the family their confirmation.
Because the system holds children’s names and allergies, privacy was part of the build rather than a promise. No public page can read a child’s details back: a family’s own booking page shows the reference and the amount to pay, and opens only from their private link. The bank details appear only there, and the data has an end date.
The organiser’s screens hold children’s details, so they aren’t shown here.
The numbers at a glance
Capacity, confirmed, awaiting payment and places remaining.
Unpaid reservations
Ones past 24 hours are listed for the organiser to release, never removed behind a family’s back.
Priority booking
An early window for one group, opened with a code, with a deadline the organiser can change without a developer.
The door list
A printable arrivals sheet, with each child’s age beside their name.
Emails in the party’s colours
The reference and the confirmation arrive looking like the page they came from.
Erasure after the party
Two buttons remove the children’s details and then the families’ contact details, keeping only the reference, the head count and the amount.
Tech Stack
A small system behind one page: a database that does the counting, and a login for the organiser.
Frontend
Next.js 16 · React 19 · Tailwind CSS v4 · TypeScript
Database
Supabase (Postgres) — row-level security on every table
Capacity
One locked database function for the count, the reference and the booking
Resend — reference and confirmation emails
Validation
Zod
Motion
CSS scroll-driven animation — no JavaScript library
Hosting
Vercel
Selling tickets for an event?
A booking page that counts the places properly, takes payment your way and gives you a door list on the night can be built for one event or for many. Tell me what you’re planning.
Website packages and prices