Skip to content
CodeHardy

Own productA product we designed, built and run.

Popup Pal

From trader applications to tickets at the gate.

What it is
Event management for markets, fairs and exhibitions
Our role
Product, design, engineering and operations
Status
Live at popuppal.com
All project details
Type
A CodeHardy product
What it is
Event management for markets, fairs and exhibitions
Our role
Product, design, engineering and operations
Platform and stack
Next.js, TypeScript, PostgreSQL and Stripe Connect
Status
Live at popuppal.com
Popup Pal organiser dashboard showing the Applications inbox for a series called Lantern Yard Winter Markets 2026. A notice headed One application, many dates sits above tabs reading Needs a decision, Awaiting deposit, Booked, Reserve list and Closed, with Booked selected. Two trader cards, both marked Returning, each list the dates requested, with a confirmed or rejected badge on every date.
The applications inbox for a series of market dates. Demo data.
  • One application, many dates

    A trader applies once for the whole series and picks the dates they want, instead of applying event by event.

  • Tabs by stage

    The inbox is grouped into needs a decision, awaiting deposit, booked, reserve list and closed.

  • Every date gets its own outcome

    Each requested date is confirmed or rejected separately. The second card shows one date confirmed and one rejected. The notice on screen says the trader gets a single email covering every date.

The brief

Running a market involves more than selling tickets. Organisers need to review traders, collect stall fees, keep track of insurance documents and decide who goes where on the day.

We built Popup Pal to bring those tasks together. An application can become a booking, a payment and an allocated pitch without the organiser copying the same details between separate tools. We own the product and take it through design, development, deployment and ongoing support.

Our contribution

CodeHardy’s role

  • Product development and interface design.
  • The web application, database and payment integration.
  • Hosting, releases, monitoring and support.

Event organisers

  • Event prices, trader selection and pitch allocation.
  • Their customer relationships, refund policies and Stripe accounts.

The engineering challenges

What we built

Trader applications and documents

Organisers create application forms, review traders and collect supporting documents in one inbox. Traders can save a draft, apply for several dates and receive reminders before their documents expire.

A dialog titled Accept Stone & Stem Pottery, open over the list of applications. It has a stall category menu set to Craft stall (3m) at £45.00, an optional internal notes field and a button labelled Accept & provision stall. Behind it, the trader's application answers are partly visible, including that they hold public liability insurance.
Accepting an application. Frame from a product demo recording. Demo data.
  • The decision sets the price

    Accepting a trader means choosing a stall category, here a 3 metre craft stall at £45.00.

  • The invoice follows from the decision

    The helper text says a stall is provisioned in this category and a fee invoice is sent when it is not free.

  • Answers stay with the application

    The trader's answers to the organiser's own questions sit on the application card, including whether they hold public liability insurance.

Stall offers, invoices and payments

Accepting an application sets the stall and price. Deposits confirm bookings, balance invoices follow automatically, and reminders chase unpaid invoices. Card payments go directly to the organiser's Stripe account.

A public invoice page for invoice PP-INV-000007, Summer Makers Market 2026, marked issued. It shows a stall fee of £45.00 due 20 July 2026 for Stone & Stem Pottery, issued by Demo Makers Markets, a Pay £45.00 button and the line Secure card payment by Stripe.
The pay link a trader receives for a stall invoice. Frame from a product demo recording. Demo data.
  • Pay directly from the invoice

    Traders open their invoice and pay from a secure link, without a sign-in step.

  • Issued by the organiser

    The invoice names the organiser as the issuer. The card payment is a direct charge on the organiser's connected Stripe account.

  • Card payment by Stripe

    The page states that card payment is handled by Stripe. Popup Pal takes no percentage of stall fees.

Tickets without an account

Visitors buy tickets as guests and open them from an email link. Organisers control ticket types, capacities, sale windows and discounts. Buyers can retrieve their tickets or request a refund from the same order page.

Floor plans and show day

Organisers lay out pitches in a drag-and-drop editor and share the plan with their setup crew. On the day, staff use a phone browser for ticket scanning, door sales and trader check-in, with no dedicated app or scanner to install.

The floor plan editor for Summer Makers Market 2026. A toolbar offers Pitch, Wall, Door and Label tools and three layout presets named Empty hall, Market rows and Perimeter. The canvas shows rows of pitches labelled A1 to A9 and B1 to B9. Pitch A4 is selected, and a side panel shows its position, width, height and label.
The floor plan editor with one pitch selected. Frame from a product demo recording. Demo data.
  • Tools and layout presets

    Pitches, walls, doors and labels are added from the toolbar. Empty hall, Market rows and Perimeter give a starting layout.

  • Print and share view

    The plan has a print and share view. The notice on screen says it is for the setup crew on the morning of the event. Unsaved changes are flagged next to the save button.

  • Traders are assigned to pitches

    The selected pitch, A4, shows the start of the assigned trader's name under its label. Its position and size are edited in the panel on the right.

The Scan tab at phone width. A notice headed Any phone is a scanner sits above a count of 12 admitted and 44 remaining, broken down by ticket type. Below, an amber panel reads ALREADY SCANNED with the ticket holder's name, ticket type, ticket serial and the line Already scanned 21:43:47.
The ticket scanning screen at phone width, refusing a ticket that was already scanned. Frame from a product demo recording. Demo data.
  • Scan in a phone browser

    Scanning runs in the phone's browser. There is no app to install and no scanner to hire, and several staff can scan at the same time.

  • Counts by ticket type

    Admitted and remaining totals are shown for the event and for each ticket type.

  • A second scan is refused

    Staff see when a ticket has already been used, alongside its holder and ticket type.

The trader directory at phone width. A notice headed Your trader directory explains check-in and the payment badges. The first card shows The Sourdough Project on pitch A1 with badges reading claimed, Checked in 6 Jul 2026 21:44 and Paid, and buttons for Message, Invoice, No-show and Cancel. The next card, Wren & Willow Prints on pitch A4, has a Check in button.
The trader check-in screen at phone width. Frame from a product demo recording. Demo data.
  • Checked in, with a time

    Each trader is checked in as they arrive, against the pitch they were given on the floor plan. A trader who does not arrive can be marked as a no-show.

  • Payment status on the same card

    Staff can check whether a trader has paid while checking them in. Unpaid invoices remain visible on the same card.

Engineering decisions

Explore the project

Have a project in mind?

Tell us what you need to build or improve. We reply within one working day.