Skip to content
All Projects

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.

View Live Site
Next.js 16 Supabase Tailwind CSS v4 Zod Vercel
halloween.skellyeventmanagement.co.uk
Halloween Party — the event page

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.

01

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.

02

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.

03

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.

04

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.

05

One-Press Confirmation

The organiser marks a booking paid and the confirmation email goes out by itself.

06

Door List and Export

A printable arrivals sheet for the night, and every booking as a spreadsheet file.

07

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

halloween.skellyeventmanagement.co.uk
Halloween Party page showing what is included in the ticket

Booking, explained in three steps

halloween.skellyeventmanagement.co.uk
Halloween Party page explaining the three steps of booking

Every answer open, no accordions

halloween.skellyeventmanagement.co.uk
Halloween Party questions and answers

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.

halloween.skellyeventmanagement.co.uk
Halloween Party booking form with two adults and two children counted and a total of £16

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

Email

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