Skip to content
WebEvent Booking

F Bar by FTV

Table reservations, ticketed events & an admin back office for nightlife venues

Sell tables, bottle service, and ticketed nights — without ever double-booking a seat.

FBWeb preview

A full-stack booking and venue-management platform for bars, clubs, and event spaces — table reservations, ticketed events, guest lists, and an admin back office. Guests browse upcoming events, pick a date and table tier, choose a package (cover, bottle service, or VIP booth), and pay through a responsive React + Vite SPA backed by a Node/Express REST API and a PostgreSQL data layer. A transactional inventory engine with row-level locking and TTL holds prevents double-booked tables, payments confirm only on server-verified webhooks, and the venue team runs everything from a role-gated admin console with live capacity meters, guest-list approvals, and CSV door export.

Features built in

Booking & Inventory Engine

  • Finite table inventory modeled per event, tier, and time slot
  • Reservation writes wrapped in DB transactions with row-level locking
  • Temporary holds with TTL expiry that release tables back to the pool
  • Availability endpoint returns real-time remaining capacity per tier
  • Idempotency keys so a retried booking never charges or seats twice

Guest Booking Funnel

  • Multi-step funnel: event → date → table tier → package → checkout
  • Cart and step state managed via context + reducer hooks
  • React Hook Form with Zod schema validation on every step
  • Optimistic UI on reserve actions with automatic rollback on failure
  • Mobile-first responsive layout for on-the-go bookings

Auth & Roles

  • JWT access tokens with refresh-token rotation
  • Role claims separating guests, hosts, and admins
  • Route guards on the client and middleware on the API
  • Password hashing with bcrypt and rate-limited login
  • Session restore on reload via silent refresh

Payments

  • Hosted checkout redirect for PCI-safe card capture
  • Server-verified webhooks as the single source of truth
  • Booking flips to confirmed only on payment-succeeded event
  • Signed webhook verification to reject spoofed callbacks
  • Refund and cancellation flows that restore table inventory

Admin Back Office

  • Event calendar with live capacity meters per tier
  • Bookings table with search, status filters, and pagination
  • Guest-list submission and approval workflow
  • CSV export of confirmed guests for door staff
  • Role-gated dashboard accessible only to venue admins

Front-End Platform

  • React 18 SPA bundled with Vite for fast HMR and lean output
  • Lazy-loaded route chunks via React Router v6
  • TanStack Query for server-state caching and revalidation
  • Tailwind CSS design system with venue-branded theming
  • Day.js for timezone-safe event date handling
React 18Vite 5React Router v6React Hook Form + ZodNode.js + ExpressPostgreSQLJWT auth (access + refresh rotation)Hosted checkout + webhooksTanStack QueryTailwind CSSDay.js (timezone-safe dates)
  • A nightclub selling VIP booths and bottle-service packages for weekend events
  • A rooftop bar taking table reservations with cover charges
  • An events space managing ticketed nights with guest-list approvals
  • A restaurant group running multiple venues from one admin back office

From idea to live in 4 steps

Enquiry

Tell me what you want to build using the form below — platform, features, budget, and timeline.

Quote & Scope

Within 24 hours you get a fixed quote, a clear scope, and a delivery plan — no surprises.

Design & Build

I design and build in weekly milestones with live previews so you watch it come together.

Deploy & Support

I ship it live — web, App Store, Play Store — and stick around for support and iteration.

Common questions

Can it handle multiple venues?

Yes — events and tables are scoped to a venue entity, so one admin console can manage several locations.

How are double-bookings prevented?

Reservation writes run inside a database transaction with row-level locking, and unpaid holds expire on a TTL sweep that returns tables to the pool.

Which payment provider does it use?

It integrates a hosted checkout provider (Stripe-style). Bookings only confirm on a server-verified, signature-checked payment webhook.

Is it mobile-friendly?

The funnel is mobile-first and responsive, since most reservations happen on phones.

Can I rebrand it?

Yes — colors, logo, and copy are driven by a Tailwind theme and config, so rebranding is a styling change, not a rewrite.

What's needed to deploy?

A static host or CDN for the SPA, a Node host for the API, and a PostgreSQL database. Config is environment-driven for clean staging/production separation.