Runwell Start a project

Fusion Vibes

A lucky draw nobody can argue with

LED display revealing a winner’s name inside an iridescent pearl ring for Prize #15 at the Annual Dinner 2026

A live-draw system for a 1,200-guest annual dinner: setup, an operator cue desk, an LED display and results. It’s provably fair and keeps running if the Wi-Fi drops.

Client
Fusion Vibes Events
Industry
Corporate events
Location
Malaysia
Year
2026
Services
Web apps, Mobile & PWA, Backend & APIs, Systems
Status
Live Nov 2026
LED display showing a grid of confirmed winners under “Congratulations”
The 485-winner bulk round, sealed before it plays. (Demo data.)

Where it started.

Fusion Vibes runs corporate dinners where the lucky draw is the moment everyone waits for: 1,200 guests, 500 prizes, a ballroom watching the screen. Spreadsheets and random-name websites can’t prove a draw was fair, and a dropped venue connection in the middle of a live show is not an option.

Operator control room with the run of show, the next prize and a live output preview
The cue desk mid-show: run of show, current cue and a live preview of the screen.
Event setup screen choosing between the Pearl orbit and Floating glass display styles
Setup: organisers choose the display style and see it previewed live.

How we approached it.

We built the draw like a stage production. Organisers set up guests, prizes and branding ahead of time. On the night, an operator works a cue desk while a separate display link drives the LED wall. Every result is chosen and sealed before the animation plays, using cryptographic randomness that can be replayed and audited. The show carries on offline if it has to.

Where it stands.

The system is built and tested for its first event: an annual dinner in Penang on 21 November 2026. Guests get a show; the organiser gets a draw they can prove was fair, with a full audit trail afterwards.

The system behind it.

Fusion Vibes, taken apart: from the screen people use to the work that keeps it running.

  1. Interface

    What the ballroom sees

    • LED display 16:9
    • Pearl orbit · Floating glass
    • Operator cue desk
    • Bulk + on-stage draws
  2. App

    Three screens, one show

    • /events/[id]/setup
    • /events/[id]/control
    • /display/[token]
    • /events/[id]/results
  3. Draw engine

    Sealed before reveal

    • core/crypto
    • core/draw
    • core/recovery
    • core/sync
    • api/events/[id]/seal
    • exports · winners.csv
  4. Data

    Every draw on the record

    • events
    • participants
    • prize_groups
    • draw_sessions
    • draw_attempts
    • winner_assignments
    • audit_events
    • display_tokens
    • display_style
  5. Operations

    Built for show night

    • Offline snapshot · IndexedDB
    • Installable PWA
    • Vitest · draw engine
    • Playwright
    • Vercel

What we built.

  • Event setup

    Import the guest list by CSV, build the prize ladder, set branding and run a pre-flight check before the doors open.

  • Operator cue desk

    Arm, draw, hold, void. A calm control room for the person running the show, with every action logged.

  • LED display

    A 16:9 public display opened with a secret link: a 485-winner bulk round, then fifteen on-stage reveals. Organisers pick its look in setup, Pearl orbit or Floating glass, with a live preview.

  • Provably fair

    Winners are sealed before the reveal using cryptographic randomness. The draw can be replayed to prove the result, with no hidden weighting.

  • Offline recovery

    If the ballroom Wi-Fi drops, the laptop keeps a local snapshot and the draw continues, syncing once it’s back online.

  • Results & audit

    Winners export to CSV and a full audit trail exports as JSON for the client’s records.

Under the hood.

Frontend
SvelteKit, Svelte 5, Tailwind 4, shadcn-svelte
App
Installable PWA, IndexedDB (Dexie), Display tokens, CSV import
Data & backend
Neon Postgres, Drizzle, Better Auth, Zod
Quality
Vitest draw-engine tests, Playwright
Infrastructure
Vercel

By the numbers

  • 1,200 guests in one live draw
  • 485 winners sealed in a single bulk round
  • 15 on-stage reveals, each sealed before it plays