Build with AI

How to build an event ticketing system with Lovable

Build a working ticketing platform in a browser tab, prompt by prompt. A storefront, a checkout that holds its stock, QR tickets, a scanner for the gate, and refunds, with Lovable designing the tables and the access rules in the same chat that builds the screens.

August 2026 · 47 min read · Updated September 2026

Lovable

$ I want to sell my own tickets: a page listing my events with the ticket types and prices for each, a checkout that can never sell more than I have, a QR ticket each buyer can find again, a scanner my staff use at the door, and a back office for orders and refunds.

  • Tables designed in chat
  • Storefront and door built
  • Ready to preview
You describe it, Lovable builds it
Start here

What an event ticketing system actually is

Three applications over one database: the shop where people buy, the counter and the gate where your staff work on the day, and the back office where orders, refunds, and takings are reconciled afterwards.

An event ticketing system isn’t complex enterprise software. It is simply three straightforward tools working together: the storefront where attendees buy, the scanning app your team uses at the door, and the admin dashboard where you track sales and handle refunds.

Most organizers rely on third-party platforms because they work out of the box. But that convenience costs a fortune: you are paying a percentage on every single ticket sold. That fee might feel small for a 50-person meetup, but it turns into a massive expense when you scale to thousands of attendees.

Building your own system used to be hard because of two core edge cases: preventing two people from buying the last ticket at the exact same second, and verifying QR codes at a crowded door without internet. Once you solve these two rules with your AI coding tool, the rest of the application is just simple web screens.

Zero Overselling Risk

Two buyers clicking "pay" on the last ticket at the exact same millisecond isn’t a rare glitch. It’s standard practice. Your AI coding tool configures your database so reservations and payment happen atomically. You will never sell the same seat twice.

Anti-Fraud QR Protection

A ticket isn’t just a digital receipt. It’s a single-use access key. The system validates every QR code against your central database instantly. A screenshot forwarded to four friends will only let the first person through the gate.

Offline-First Door Scanning

When hundreds of people are waiting at the door, a slow network shouldn’t stop entry. The scanner app validates tickets instantly, syncing seamlessly even in basement venues with zero cell signal.

What the fees actually come to

27%

of a ticket’s base price went to fees on the primary market, ranging from 13% to 58% across 31 events and five ticketing companies, the GAO’s 2018 review, still the figure the Congressional Research Service puts in front of Congress in its April 2026 report on live-event tickets.

Congressional Research Service, 2026 (GAO 2018 study) · checked GAO study 2018, CRS report updated April 2026

What a ticketing platform needs

The parts every ticketing platform is built from

Two of these six decide whether the app survives its first real event. The other four are where most of the visible work is, and almost none of the risk.

01

Real-Time Inventory & Cart Hold

Each ticket type holds a number that exists and a number already gone, and the moment those two are read in one place and written in another, an on-sale will sell you past your capacity. Reserve and sell in a single database operation, decide how long an abandoned checkout holds its stock, and put the released seats back where somebody else can reach them.

02

Flexible Ticket Tiers & Limits

A date, a venue, a door time, and one or more ticket types, each with its own price, its own allocation, and its own cap per order. Keep those on the event rather than in your settings, because early-bird, concession, and on-the-door are the same event disagreeing with itself on purpose.

03

Anti-Fraud QR Tickets

A code per attendee that nobody can guess from the one next to it, a copy the buyer can always reach without an email, and a status that moves from valid to used the first time it is scanned. That status is the whole product on the day.

04

Offline-Ready Gate Scanner

A phone camera, a result big enough to read at arm’s length, and a decision in well under a second. Then the part people skip: what it does when the network drops. Queue the scans locally, admit against what the device already knows, and reconcile when signal returns, because the alternative is a queue out of the building.

05

On-Site Cash & Door Sales Sync

Walk-ups are a large share of a small event and they arrive with cash. A till that sells and prints in one movement, on the same stock as the website, keeps the door and the storefront from quietly disagreeing about how many are left.

06

Master Dashboard & Export

Orders, refunds, exchanges, what sold, what came in, and who actually turned up, with an export, because somebody will want it in a spreadsheet. Attendance against sales is the number that tells you what to print, staff, and order for next time.

Build vs buy

Own the checkout or pay per person through the door

Don’t look at monthly subscription fees. The hidden cost of ticketing platforms is the percentage they carve out of every ticket you sell. Multiply that per-ticket fee by your total attendance, and the numbers speak for themselves.

Build your own

Own the checkout outright: one purchase, the whole codebase, and no cut taken from any ticket. Forty attendees and four thousand cost exactly the same to run.

  • No percentage and no per-ticket fee, because you choose the payment rail and negotiate its rate yourself
  • The same cost to run whether you sell forty tickets or four thousand
  • Free events stay genuinely free, rather than free on some plans and charged on others
  • Your attendees’ names and email addresses are yours, on a list you can reach without an export request
  • The checkout carries your name rather than a marketplace’s, which is most of what a first-time buyer is deciding about
  • Fee handling, refund windows, exchange rules, and how many per order are your policies, not a vendor’s defaults

Rent the checkout

Eventbrite · Universe · TicketSpice · Humanitix

What renting genuinely buys you is the money rail and the audience in front of it. Card processing, refunds, chargebacks on a category that attracts fraud, payouts, and a marketplace where people who have never heard of you are already browsing. None of that is the part you would enjoy building.

  • Selling works on the first day, with the processor, the payouts, and the failed-card handling already solved
  • Chargebacks and fraud are somebody else’s problem, which matters more here than in most categories
  • The larger platforms put your event in front of people already searching, which no app of your own does
  • Scanning apps, printed-ticket formats, and door hardware arrive built rather than described
  • Every one of them takes a cut of each ticket, so the bill scales with the exact thing you are trying to grow
  • Free is not uniformly free: three of these four charge nothing on free tickets, and one charges the same flat fee unless you also sell paid ones
Eventbrite3.7% + $1.79 service fee per ticket, plus 2.9% payment processing per order

The category default, and the clearest statement of the percentage model. The page quotes a “3.7% + $1.79 service fee per ticket” alongside a “2.9% payment processing fee per order”, and lets you choose whether you or the attendee absorbs them. Free events are free: the page offers to “Publish unlimited free events at no cost”. What it does not publish is a plan ladder: the only monthly figure anywhere on it is $15/month for the Pro email tool, which is an add-on rather than the thing you are buying, so no tier price is estimated for it here. Do the multiplication before you compare anything: on a $40 ticket that combined cut is over $5, and it is charged again for every person who comes.

eventbrite.com · checked August 2026

Universe2% + $0.59 per ticket on the two published plans, with Pro quoted as “Custom pricing”

The low-percentage end of the same model, owned by Ticketmaster. Starter and Standard both show “2% + $0.59 per ticket”, and free tickets carry nothing at all. The page is unusually blunt about it: “There are absolutely no service fees. Universe is 100% free for free events”. Payment processing is bundled when you take money through Universe itself. Connect your own Stripe account instead and the page says the processing fee “will be charged to you by Stripe”, which is worth reading twice, because it changes who your money touches first. Pro publishes no figure.

universe.com · checked August 2026

TicketSpice99¢ per ticket plus card processing at 2.9% + 30¢ - 49¢ on tickets of $5 or less and at the door

Included because it prices the opposite way: a flat amount rather than a percentage, which gets cheaper relative to face value the more expensive your ticket is. The page states “99¢ per ticket plus standard credit card processing rates of 2.9% + 30¢”, drops to “49¢ a ticket” on tickets of $5 or less and on box office sales, and answers the question of what else there is with “Nope, nada, zilch.” No monthly plans, setup fees, or contracts. One line to catch: unlike the other three, a free ticket is still charged unless your organisation is also selling paid ones.

ticketspice.com · checked August 2026

Humanitix2.1% + $0.99 booking fee per paid ticket, plus 2.9% + $0.30 processing - 1% + $0.99 for charities and schools

The not-for-profit end, and useful here for showing that even a platform donating its profits still charges per ticket, because the rail underneath costs money whoever runs it. The standard booking fee is “2.1% + $0.99” with processing of “2.9% + $0.30” on top. Charities and schools pay “1% + $0.99” on the same processing. Free events cost “$Nothing. Nada. zero.”, and the page commits that “ALL plans get access to ALL features. NO sign up fees, NO contracts.” Custom arrangements exist on request with no published figure.

humanitix.com · checked August 2026

Rule of thumb: if you need an audience you do not have, buy. A marketplace putting your event in front of strangers is worth a real percentage, and none of it is something an app of your own provides. If your attendees already know who you are, because they follow you, subscribe to you, or come every month, then you are paying a finder’s fee on people you found yourself, and that is the case for building. The arithmetic that settles it is one line: your ticket price, times the percentage, plus the fixed fee, times how many people come. For scale, the Congressional Research Service reports that in 2025 Ticketmaster averaged about $8.91 in revenue for each fee-bearing ticket it sold, not your rate, but a fair sense of what a seat at the top of this market is worth to the company selling it.

No dev needed

Why build with Lovable

A working app needs more than screens: something has to store what people enter, decide who may see it, and reject what does not make sense. That part is where a solo build stalls, not the parts a user sees.

Lovable turns that work into a conversation: describe a screen or a rule in plain language and watch it appear in the live preview, in the same tab:

The build loop
1

Prompt

Say what you want to add or change, in plain language.

2

Watch

The live preview rebuilds in the browser as Lovable writes the code.

3

Try it

Click through the real app, with real buttons, forms and data rather than a mockup.

Refine

Select what’s off and describe the fix, or ask for what’s next.

Loop back to Describe

None of that requires a computer science background or writing code, and the whole build happens in one browser tab, one request at a time.

Data & backendhandled automatically

Connect your database in a single step, right from the chat. Lovable builds the tables, sets up the logins, writes the server-side functions, and turns on live updates, each one an ordinary request in plain language, not a separate tool to learn.

Click to point instead of describing where

Select any element in the live preview with Lovable’s Select elements tool, and your next message applies to exactly that piece.

Full ownership and complete privacy

The app and the records in it are yours. Every change is saved automatically, and the repository Lovable syncs to GitHub is private on every plan, with no technical setup and not one Git command.

What it costs

Pay a developer, or do it with AI

Two ways to get the same app built: pay a developer for their hours, or spend your own describing it to an AI coding tool. Here is what each one costs to build, and what it costs to keep running once it is live.

Hire a developer

Custom build, from scratch
Developer
~$13k-$51k
Supabase (backend)
Free tier · $25/mo (Pro plan)*
Hosting
$0 free tier
Build time
~255 hrs of their work

~$13k-$51k to build, then from $25/mo after launch

Our ~255-hour estimate, priced against the rate survey linked below. That survey puts senior US developers in the $100-$150+/hour bands and notes the 20-40% an agency adds over them, so $50/hr and $200/hr bracket the realistic ends. The interesting part is where the hours land: roughly a third of them go on the inventory rules and the door, neither of which appears in a single screenshot, which is the usual reason a quote for this kind of app comes back at a number the organiser was not expecting.

Build it with Lovable

From scratch, with Lovable
Lovable
Free (30 credits/mo) to $25+/month (Pro, from 100 credits)
Backend (Supabase)
Free tier · $25/month (Pro plan)*
Hosting
$0 on a Lovable subdomain
Your time
~122 hrs

Free to try the idea, ~$25-$50+/month on Pro while you build a real one, then whichever credit tier you keep using

Lovable bills by credits, so what you pay tracks what you build: importing the pre-built template can fit inside the Free plan’s 30 credits a month, while a full from-scratch build burns through Free fast and usually needs Pro. Pro’s entry rung is $25/month (or $250/year, roughly $21/month effective) for 100 credits, the bottom of a ladder where 200 credits runs $50/month (or $500/year, about $42/month), and a multi-session build often lands on that rung or higher rather than the entry price.

* One line on the free tier is worth more attention on this build than on most. Supabase Free comes with 500 MB of database space, 1 GB of file storage, and 5 GB of monthly egress, and it puts a project to sleep after seven days without activity. Look at the traffic shape of a ticketing app (one on-sale, one event night, weeks of silence around both) and that sleep is not an edge case, it is the default state. Pro, from $25/mo, ends it, brings 250 GB of egress (then $0.09 per GB), and keeps a daily backup for 7 days. Free is genuinely fine until you announce something. Announcing is the moment to move.

Neither column takes a cut of a ticket, because the app records orders and whatever payment rail you connect charges its own rate, so the running cost is a database and a host and nothing else. That bill does not move with attendance: forty tickets and four thousand cost the same to host, and the only thing that grows is the traffic on the night.

Prices and rates from supabase.com, developex.com and docs.lovable.dev, checked August 2026.

Plan first

Decide before you build

Answer these six simple questions before launching your platform. Settling your rules today takes minutes: fixing them on the day of the event costs money and lost sales.

01

How will you take payments?

Decide whether you will process credit cards online or accept manual transfers/cash. Card processors automate sales instantly and handle disputes, but they take a small fee (2-3%) on each transaction.

02

General admission or reserved seating?

Are your tickets first-come, first-served, or do attendees pick exact seat numbers on a floor map? Simple ticket counts are effortless to build, while interactive seat maps require additional setup logic.

03

Guest checkout or forced accounts?

Requiring buyers to create an account creates friction and lowers sales. Allowing instant guest checkout sells more tickets, while sending a simple login link via email helps buyers recover lost tickets later.

04

Hidden fees or all-inclusive prices?

Will you absorb payment processing fees into the ticket price or add them on top at checkout? Adding surprise fees at the final step is the single biggest cause of abandoned shopping carts.

05

Clear refund and transfer policies

Define your rules upfront: Can attendees request a refund up to 48 hours before the event? Can they transfer a ticket to a friend’s name? Setting these rules into your system automates support and stops dispute confusion.

06

Door entry logistics & internet signal

How many staff members will scan QR codes, and will the venue entrance have reliable Wi-Fi or 4G? If the signal drops in a basement or field, your scanning app must be able to validate tickets offline.

Approaches

Comparing your build options

How you start decides whether the hard parts get built or discovered. Here is one app three ways: by hand, on a UI kit that gives you a catalogue and stops, or in a single Lovable chat that designs the tables and the screens together.

~255 hrsBuilding by hand

Two deadlines sit inside this build and neither moves. The on-sale, where a hundred people press buy in the same second and the count has to stay honest, and the door, where a scan has to resolve in under a second on a phone with one bar of signal. Both are hard to get right and impossible to postpone.

~190 hrsGeneric UI starter kit

A starter kit hands you a catalogue, a cart, and a dashboard. It has no notion of a ticket that must be sold once and admitted once, no idea that two buyers can reach the last twenty at the same moment, and nothing at all for the gate. The inventory rules and the whole door are still yours.

~122 hrsBuilt with Lovable

One message at a time in a browser tab, with the tables, the order rules, and the screens over them all designed in the same conversation, and a live preview you click through after every change.

Interactive calculator

Estimate your exact build timeframe

Select the features your event platform needs. Uncheck what you don’t use to see your custom setup timeframe.

What your ticketing platform needs

Your estimate

122 hrs

start to finish

Based on the 6 of 6 features you’ve selected, plus ~29h of groundwork. Toggle any on the left to watch the number move, and open the groundwork row to untick what you have already, such as a database that is already running or going live if you are only building a mock-up for now.

A rough estimate, not a quote. Real time depends on how much you customize and how clean your data is.

Setting up your workspace

Let’s set up the tools you need

Nothing gets installed, because the whole workspace is a browser tab. Three things to sort out before step 01, and a fourth worth adding once the project matters to you. After that, you build by describing what you want.

1

Lovable account

Cost: Free

Nothing to download. Sign up with an email, Google, or GitHub account and you land straight in the chat where you describe what to build.

Sign up for Lovable
2

Lovable subscription

Cost: $25/month (Pro) and up

Lovable bills by build credits, so the plan you need follows what you build. Free gives you 5 credits a day, capped at 30 a month, which is enough to try it rather than to finish an app. Pro is $25/month for 100 credits ($250/year, about $21/month), and that is the bottom rung: a build spread over several sessions usually lands on 200 credits at $50/month, or higher.

Compare Lovable plans
3

Supabase project

Cost: Free to start

Where your app keeps its data. Connect your own Supabase project from the chat, or let Lovable create one for you. Either way it designs the tables, adds the logins, and wires the screens to them from there.

Connect Supabase to Lovable
Optional
4

GitHub connection

Cost: Free

Not needed to build anything, since Lovable keeps its own history of every change. Link a GitHub account and it also keeps a private repository in sync, so a copy of the real code exists outside the browser tab. Worth doing before the project is one you would hate to lose.

Set up GitHub sync

Only the first three are needed to start, and none of it touches your computer. From here, you describe what you want and Lovable builds it in the browser.

Step by step

Build your ticketing platform, prompt by prompt

Nothing installs. You describe a piece, Lovable builds it, and you click through the preview before asking for the next. One thing shapes the order below: the two parts that decide whether this app survives a real event (the sale and the scan) are exactly the two a live preview cannot show you, so both get asked for explicitly rather than left to appear.

  1. 01

    Connect Supabase before you describe a single screen

    Screens built over data that does not exist yet get rebuilt when it does. Connect the database first, and set the two rules the whole build depends on while the chat is still empty.

    PromptSet up the project
    Connect my Supabase project first, before building any screens. Then set up an event ticketing platform and hold two rules for the rest of this project: what remains of a ticket type is always worked out from its allocation minus what has sold, never stored as a number a screen can write. A ticket can be admitted exactly once, with that check made on the server rather than on whichever phone scanned it. Use these words consistently throughout: organisation, event, performance, ticket type, allocation, order, ticket, scan. Confirm the connection is live and tell me which of those two rules affects how you will design the order tables, before you design them.

    Asking it to tell you how the rules change the design is worth the extra exchange. It is the cheapest way to find out early whether the model it has in mind is a counter it decrements or a count it derives.

  2. 02

    Describe the events, and watch the storefront appear

    The part Lovable is fastest at, and the part where seeing it beats specifying it. Get the selling model in front of your own eyes before anything can take money.

    PromptModel the events and build the storefront
    Design the tables and build the public side over them. Organisations own venues and events. An event has a title, description, image, status, and an organisation. A performance is one date of an event, with a start time, a door time, and a capacity, because an event can run several times. A ticket type belongs to a performance with a name, a price, an allocation, a sold count, and a maximum per order. Add two organisations and three events as sample data, one with early-bird and standard prices on the same date. Then build the storefront: browsing with search and a date filter, and an event page showing the dates, each ticket type with its price and what is left, and a quantity picker that respects the maximum per order. No sign-in and no checkout in this message.

    Click the two-tier event in the preview before moving on. One date carrying two prices is where a ticket model usually first contradicts itself, and here you can see it rather than reason about it.

  3. 03

    Ask for the sale to be atomic, in those words

    A preview cannot show you two people buying at once, so this is the one step where you have to specify the behaviour rather than look at it. Ask for the guarantee explicitly and ask to see it proved.

    PromptBuild the checkout that cannot oversell
    Build the order path, and treat this as the most important message in the project. Orders carry a performance, a buyer name and email, a status of pending, confirmed, or cancelled, a channel of online or box office, and a total. Tickets belong to an order and a ticket type. Stock has to move safely: write a database function that locks the ticket type row, checks the allocation against the sold count, and creates the order, its tickets, and the increased sold count in one transaction, or fails with a clear reason. It must never read what is left and then write the order as a separate step. Put it behind an edge function so no browser updates the count directly. Give pending orders a hold window, and add a scheduled job to expire unpaid ones and return their stock. Then show me, by running it, what happens when two orders for the last two tickets arrive at the same instant.

    Bookmark the version before you send this. The order path is the piece most likely to need two or three attempts, and getting back to a known-good starting point beats unpicking a half-changed one.

  4. 04

    Three roles, and the policies that read them

    Buyers, the staff who work the door, and the admins who own the organisation. Every rule here checks two things at once, which is what makes this longer than it looks.

    PromptAdd auth, roles, and access rules
    Add email-and-password sign-up, login, logout, and a persisted session. Add three roles (buyer, staff, and admin) in their own table rather than on the account record, since anything stored there is editable by the person it belongs to, with a security definer function to check a role and another to check whether an account belongs to an organisation. Then turn on row-level security everywhere (organisations, events, performances, ticket types, orders, tickets, scans) with each rule checking role and organisation together: a buyer reaches only their own orders and tickets, staff reach their own organisation’s events and can sell and scan but not change prices or see takings, and an admin is confined to their own organisation. Add explicit with-check clauses on inserts and updates. Then sign in as a buyer in the preview and show me that another buyer’s orders and another organisation’s events both come back empty.

    Ask to see it as a signed-in preview rather than as a summary of the policies. The staff role is the one to test hardest. It goes to the most people, often casually, on the night.

  5. 05

    The door, built and previewed on your phone

    Lovable gives you a real URL for the preview, which is the whole point here: open it on the phone your staff will actually hold rather than judging a scanner in a desktop window.

    PromptBuild the door
    Build the whole door in this message. Ticket issue first: an unguessable code per ticket that cannot be worked out from the one next to it, shown as a QR on a "My tickets" page the buyer can always come back to, with a download. Then the scanner: a staff-only screen using the phone camera that reads a code, calls a server-side function to validate and redeem it, and shows a result readable at arm’s length: admitted, already used with the time and device that used it, wrong event, or refunded. The redemption must happen on the server and must be safe against the same code arriving twice at once. Then the offline case: hold the event’s valid codes on the device, admit against them when the network drops, queue the scans, reconcile when it returns, and flag anything that turns out to have been admitted twice. Then a box office till for walk-ups, selling from the same stock as the website and taking cash.

    Open the preview on a real phone for this one, not in the desktop tab. The camera permission, the brightness, and how a scan feels with one bar of signal are all things the desktop preview will let you believe are fine.

  6. 06
    Destination

    Refunds, reports, and a bookmark before you publish

    The back office, then a full rehearsal, and a bookmarked version before you point a domain at any of it.

    PromptAdd the back office and rehearse
    Finish the back office. Refunds and exchanges as server-side functions: a refund cancels its tickets, puts the stock back in the allocation, and records who did it and why. An exchange voids the old tickets, issues replacements with new codes, and settles any difference. Then the admin panel for events, orders, payments, and venues, and reports covering what sold by ticket type, what came in, how many were scanned against how many sold, and when people arrived across the evening, each exportable as CSV. Then take me through a whole event in the preview: publish it, buy two tickets, sell a third at the box office, scan all three on a phone, present the first again, refund one and confirm the stock returned, and check that both reports agree with what I actually did.

    Bookmark the version that passes this rehearsal before you connect a domain or change anything else. It is the last point where you know every part of the app worked together, and it is the one you will want back.

Authentication & security

Built-in security, role permissions, and fraud protection

Protecting buyer data and ticket validity requires strict server-side security. Here is how your system secures user access, handles permissions, and prevents ticket fraud.

Out-of-the-box user authentication

Registration, sign-in, sessions, and the forgotten-password path should all come from your database provider’s own auth service. None of it is code worth having written for you, and all of it is code that is unpleasant to get subtly wrong. Keep it to email and password: your buyer signs in perhaps twice a year, and every extra step between wanting a ticket and holding one costs you some of them.

Smart role permissions (Buyer, Staff, Admin)

The template ships buyer, staff, and admin. Buyers reach their own orders and nothing else, admins run the organisation, and staff sit in between with exactly the powers the door needs (sell at the counter, scan a code, admit somebody) and none of the powers it does not, like editing prices or reading the takings. That middle role is the one worth getting right, because it is handed out to the most people and often to the ones you know least well.

Server-verified gate check-in

The check-in screen has to refuse to admit anybody when the account holding it is not staff for that event, checked on the server, on every scan. A door tool that trusts whatever device opened it is a door tool that a shared link turns into a free entrance.

Ironclad buyer data privacy

An orders page that narrows results in the component is one missing condition away from listing somebody else’s purchase, name, and email address. Row-level security moves that decision to the point the rows are handed out, which changes the failure: a query nobody remembered to scope returns nothing instead of returning everything.

Organisation-scoped access rules (90 policies)

The template ships 90 row-level security policies, and the count is structural rather than anxious: most tables need one rule for the buyer the row is about, another for the staff working that event, and a third for the admin who owns it, with every one of those also checking which organisation is asking.

Privilege escalation defense

Buyer, staff, and admin live in a roles table of their own, for one specific reason: whatever sits on an account is editable by whoever owns that account. Store the role there and a buyer can promote themselves to admin, at which point your box office, your takings, and every other buyer’s details belong to them too.

Unguessable, single-use QR tickets

Whoever holds it gets in, which makes it exactly as sensitive as a password and rather easier to forward. Generate it from something unguessable rather than from the ticket’s position in a list, redeem it once on the server, and record which device admitted it and when, so a duplicate at the gate is a question you can answer rather than an argument.

Secure automated business logic

Refunding an order, exchanging a ticket, or admitting somebody at the gate all need to do several things at once and to outrank the person asking. The template puts 13 of those on the server as edge functions, where they run with elevated privileges above the access rules and enforce the business rule themselves, which is why the access rules can stay strict without the app becoming unusable.

Automated database backups

The free tier keeps none: not your orders, and not the tickets you have already issued. Daily backups with a week of history begin on Supabase Pro at $25/mo. Read that line twice on this build in particular: an order table lost during the week of an event leaves several hundred people holding codes you have no way to check, and no way to reissue.

PromptCheck who can see what
Review the access rules (row-level security policies) on every table. For each one, tell me in simple terms who can view, add, edit, and delete records, confirm that people can only reach their own data while the right roles can reach more, and flag anything left open that shouldn’t be.

Paste this into the chat before launch so Lovable checks nobody can see data they shouldn’t.

The one rule that matters: the database service key, the secret your ticket codes are signed with, and any payment key you add later never belong in the app or in a public repo. If one of them gets out, assume it is compromised and rotate it that day.

Workflow rules

What speeds the build, and what slows it

Speeds the build

  • One small request per message, such as a field, a screen or a rule, rather than the whole app at once
  • Connecting your database before building screens that need real data, not after
  • Using Select elements to point at the exact thing that should change, instead of describing its location in words
  • Bookmarking a known-good version before a redesign or a change to the data model
  • Reading each response before sending the next request, so small mistakes don’t stack up

Slows the build

  • Asking for an entire app in one message instead of one screen at a time
  • Building screens for data your database does not hold yet
  • Describing which button or section to change instead of selecting it
  • Skipping bookmarks, then scrolling far back through history to undo a bad change
  • Approving several messages in a row without previewing what actually changed
Keeping a safe copy

Connecting GitHub (Optional)

Every change in Lovable is saved automatically without any technical setup. You only need to link GitHub if you want a private copy under your own control or plan to hand the codebase over to external developers.

What Git actually is

A recorder for a project: every change becomes a version you can go back to, and nothing is ever overwritten. GitHub is the service that keeps those versions online.

Lovable already saves every change

A new version is created each time Lovable changes your project. No save button, no Git command, and the full history is there to scroll back through.

Version history, Lovable docs

Reverting undoes the code, not your data

One click restores an earlier version of your code and redeploys it, but nothing already written to your database rolls back with it. A UI or logic change is safe to undo. A change that touched real records is not.

Bookmark before a big change

Before a redesign or a change to your data model, bookmark the version you are on: one click back instead of a long scroll through history.

Connecting it, if you want to

Open your project settings, pick GitHub, and authorise the account. Lovable creates a private repository and keeps it in sync both ways: changes in Lovable reach GitHub, and anything pushed to that branch comes back in. Free on every plan.

GitHub integration, Lovable docs

It’s also how you leave, if you ever want to

The synced repository is a standard Vite and React project: clone it, hand it to a developer, or deploy it yourself.

Deployment, hosting, and ownership, Lovable docs
Going live

Where to host your application

Hosting gives your app a home on the internet so anyone can open it via a web link. Choose a service below to make your site live. (Your database, logins, and business records are stored separately in Supabase, covered below).

HostBest forNotesFree tier
LovableBuilt inPublishing from the chatThe project you have been previewing publishes itself, with nothing to configure and no account to open anywhere else. Free on any plan at a lovable.app address. Paid plans put it on your own domain: buy one through Lovable and the DNS is done for you, or point one you already own at it using the two records the setup screen shows. Certificate issued automatically either way.Free on a lovable.app subdomain · own domain on paid plans

One button, and the app you have been previewing is live.

Optional

Hosting it somewhere else

Only for a setup Lovable does not offer: a host you already pay for, or the exported code on your own account. None of it is needed to go live.

HostBest forNotesFree tier
VercelOne-click deploysConnect the repository once and every push goes live on its own, with nothing to configure for a Vite project. The line to read before your first on-sale is the plan terms: Hobby permits personal, non-commercial use only, and charging people for entry is commercial under any reading of it, so anything selling belongs on Pro at $20/user/mo.Pro from $20/user/mo (Hobby is non-commercial)
NetlifyDrag-and-drop or GitConnect the repository, or drag the built folder onto the page and be live in about a minute. It needs one redirect rule so that a link straight to a single event opens that event rather than a not-found page, which matters here, because a shared link is how most of your buyers arrive.Free tier
Cloudflare PagesHandling the on-sale spikeCopies of the site sit near your visitors rather than in one place, which is the property that matters on this build: a ticketing site is idle for weeks and then serves a month of traffic in about ninety seconds when tickets go on sale.Generous free tier
GitHub PagesNot really this appFree publishing straight out of your GitHub project, after changing one routing setting. Listed mainly to be ruled out: publishing free requires the repository to be public, and this one sits alongside an app holding your buyers’ names and email addresses, so the free path is one you would not want to take.Free from a public repo only
Firebase HostingTeams already on GoogleSet it up once, then release with a single command each time. The reason to choose it is almost always that your other accounts are already Google ones.Free Spark tier
AWS Amplify HostingTeams already on AWSPublishes from the AWS console, with one rewrite rule so a direct link to an event resolves. Worth choosing when AWS is already on your invoices and you would rather not add a vendor.Free tier (build + hosting)
SurgePublish from the terminalOne terminal command puts the built folder online, with no repository anywhere in the process. Good for showing a venue what the storefront looks like over coffee, though not for the address you print on a poster.Free - unlimited publishing
DigitalOcean App PlatformDigitalOcean usersBuilds and serves from the account that already holds whatever else you run. That consolidation is the whole reason to pick it over the rest of this list.Free - 3 static sites, 1 GB/mo transfer

Any of these will serve the app. Three things to check here rather than one. Does the plan allow commercial use? Vercel’s Hobby tier does not, and you are taking money. Can it publish from a private repository, given the code sits beside an app holding your buyers’ contact details. And does it give you HTTPS on a real domain, which on this build is a functional requirement rather than a nicety, for the reason below.

Your scanner will not open the camera unless the page is on HTTPS. Browsers only hand over a camera on a secure origin or on localhost, so a check-in screen opened over plain http, or on a bare address on the venue wi-fi, shows a permission failure and nothing else. Every host above gives you HTTPS on a real domain for free. Use it, and then test the scanner on the actual phone, at the actual door, before the doors open rather than while there is a queue.

Database & backend

Keep your data in Supabase

Events, orders, issued tickets, accounts, and whichever images you attach. This is also where the rules that outrank the person asking live: refunding, exchanging, and admitting somebody at the gate.

ServiceBest forNotesFree tier
SupabaseData, auth, functions, filesPostgres holds the events and the orders, auth covers all three kinds of account, edge functions carry the order, refund, and admit-a-ticket rules that have to outrank the person asking, and storage holds your event images. Opening a free project and handing over its URL and publishable key is the whole of the setup. Watch one line on the free tier: a project pauses after a week of nothing happening, and weeks of nothing happening is the normal state of a ticketing app between events.Free tier, then usage-based
AI workflows

Where AI genuinely helps an organiser

Each of these is one more prompt once the selling works. The template carries no outside keys, so the first one also creates the single server-side function the other three go through, with your key on it alone.

Write the event listing from the facts you already have

The description is the last thing done before an on-sale and usually the most rushed. Turning a date, a venue, a line-up, and three bullet points into a listing that reads properly is an edit rather than a writing task.

PromptWrite the event listing from the facts you already have
Add a "Draft the listing" action on the event form. Send the event name, date, door time, venue, ticket types with their prices, and any notes I have typed to a server-side function calling an AI model, and return a short summary line and a longer description in a tone I choose. Show them as editable drafts rather than saving them, never invent a detail I did not provide (no line-ups, no times, no claims about the venue) and leave anything it was not given blank instead of guessing.

Answer the questions your inbox keeps getting

Every event generates the same messages: is it accessible, can I bring a child, where do I park, what happens if it rains. Answering them from what you have already published is the least interesting hour of running an event.

PromptAnswer the questions your inbox keeps getting
Add a question box on the public event page that answers from that event’s own published details and my organisation’s standing information only, through my ai function. Retrieve the relevant text first and pass it in, keep the answer to what is in that text, and when there is no answer say so and offer the contact route rather than guessing. Never let it state a policy on refunds, entry, or accessibility that is not written in the source it was given.

Explain what actually happened at the door

Attendance against sales is the number that decides how much to print, how many staff to book, and how many to order for next time. It is buried across orders, tickets, and scans in three different shapes.

PromptExplain what actually happened at the door
Add a post-event summary that sends the aggregate figures for one event (tickets sold by type, revenue, how many were scanned in, when the arrivals happened across the evening, refunds and exchanges) to my ai function, and returns a short written read of it: how the sale went, what turnout looked like against what sold, and where the arrival peak fell. Send aggregate numbers only, never attendee names or email addresses, and have it state the figures rather than describing them vaguely.

Ask your own sales a question nobody built a report for

Whatever reporting you build answers the questions you had while building it. The questions that turn up later are things like which tier sold out first, whether March’s crowd came back in June, or which night people bought latest.

PromptAsk your own sales a question nobody built a report for
Put a question box on the admin dashboard that converts a plain-language question about my events into a single read-only lookup and renders the answer as a small exportable table. Constraints, all of them enforced rather than requested: describe the tables to the model instead of sending it any rows, permit SELECT and nothing else, run the query under the signed-in account so the same access rules that govern the rest of the app govern this too, exclude attendee names and email addresses from anything it returns, and print the query beside the answer so I can see what it actually asked.

You bring no key and pick no provider: Lovable manages an API key per project, and if you do not name a model it chooses one from what you describe. Match the model to the job: fast and cheap for anything that runs on every record, stronger only where the reasoning matters. Send every feature above through that one integration.

Ready-made option

Get a head start with our template

Don’t want to assemble the app step-by-step? Get the complete, fully-functional template. Connect your database, add your event details, and start selling tickets in an afternoon, no manual coding required.

Event Ticketing System

The exact ticketing platform this guide builds, packaged so you can open it, point it at your own backend, and make it yours from there. An event ticketing platform that takes you from selling tickets online to scanning people in at the door. Attendees buy in a few taps, your staff sell and check in on the day, and you keep an eye on orders and payments behind the scenes.

React 18ViteTypeScriptTailwind CSSSupabase
Out of the box

The key benefits of starting with a template

Skip weeks of backend coding, complex security tests, and edge-case debugging. Launch a complete, custom ticketing platform in under an hour.

Building the core from scratch

~122 hrs

Opening the template, already built

~1 hr

~121 hrs of building you skip

These measure two different things on purpose. The ~122 hrs is the cost of building the app. The ~1 hr is how long the finished one takes to open, aim at your own database, and load your first event into. Wiring up a payment rail and deciding your refund rules cost the same on both paths, so neither figure includes them.

A checkout that already holds stock

Ticket types carry what exists and what has gone, with a cap per order, and the order path moves both together rather than reading one and trusting it, which is the difference between a busy on-sale and an apology to the last four buyers.

Turnkey entrance & scanner toolkit

A camera scanner that admits a code once and refuses it the second time, a queue that holds scans when the signal drops and reconciles them when it returns, a counter till for walk-ups on the same stock as the website, and a maintenance job for when a barcode goes wrong at the worst moment.

Pre-configured roles & security

Buyer, staff, and admin accounts with 90 row-level security policies behind them, every one also checking which organisation is asking, plus 13 server-side functions for the rules that have to outrank the person asking, like refunding an order or admitting somebody at the gate.

Clean code optimized for AI prompts

Typed throughout, organised by feature rather than by file kind, and annotated wherever the reasoning would not be obvious to somebody reading it cold. That last part matters most around the order path: a change made there without following the pattern already in place produces the sort of bug that surfaces at a sold-out door, not in a test run.

Customer story

From founders who build on our templates

Starting with this template saved us dozens of hours of complex setup. Instead of building from scratch, I loaded the template into our AI assistant, customized the ticketing rules with simple prompts, and shipped a live platform in under several days.
Jeevan ThomasJeevan ThomasFounder & CEO, Hado.ai
Got questions?

Common questions

Not on its own. The template records orders and tracks their payment status, but the payment itself is simulated rather than real. No gateway is wired up, and no processor key sits anywhere in it. Connecting one is a described step rather than a rebuild, and doing it deliberately is the point: whichever rail you pick sets the fee on every ticket you sell, and that is the number this whole approach is about controlling.

No, and it is the half your AI coding tool handles best. Describe what you want in ordinary language and it produces the tables, the three kinds of account, the rules governing what each can reach, and the server-side functions behind creating an order or admitting somebody at the gate. Your one job is opening a free Supabase project for it to write into, which is also what keeps your events and your buyer list somewhere you own rather than somewhere you are renting.

The database, if you ask for it properly. The rule to insist on is that reserving stock and creating the order happen in one operation that cannot be interrupted, rather than a screen reading the remaining count and writing an order a moment later. Ask to see it proved with two orders landing at the same instant on the last ticket, a demonstration, not a description, because this is the bug that only appears when the event is going well.

It can, and this is worth specifying before it is built rather than after. The pattern is that the device holds the list of valid codes for that event, admits against what it already knows, queues each scan locally, and reconciles when signal returns. What you decide is how it should behave in the gap. Most organisers would rather admit a genuine attendee and catch a duplicate on reconciliation than hold up a queue, but that is a policy call and the code should reflect the one you actually made.

Not without building it. This template sells general admission: each ticket type has a number and buyers take from it. Reserved seating is a genuinely different application: a plan of the room, a hold on individual seats while somebody checks out, and a picker that stays usable on a phone. It is describable in plain words like anything else here, but it belongs in the plan before the data model rather than as an addition afterwards.

Not as it stands. Orders and tickets are shown in the app, and a buyer with an account can always come back and find theirs, which covers the common case of a lost email. Sending confirmations means connecting an email service, which is a small, well-defined addition, and one worth making before a real on-sale, because a ticket somebody can only reach by signing in is a support message waiting to happen.

Two things, both with a free tier: somewhere to keep the data and somewhere to serve the app. Supabase Pro, from $25/mo, is the upgrade to make once a real event depends on it, and the reason is less about size than about sleep. A free project shuts down after seven quiet days, and quiet is what a ticketing app is between events. Past those two lines, the only cost tied to a ticket is whatever your payment rail charges. Nothing else takes a cut.

Yes. That is built in rather than bolted on. Events, orders, and staff all belong to an organisation, and the access rules check which one is asking on top of checking the role, so a promoter running three rooms or an agency running events for several clients keeps them properly separate rather than filtered apart on screen.

Nothing here is proprietary. Events, orders, tickets, and check-in records live in ordinary PostgreSQL, so a standard dump gives you everything in a form any Postgres host accepts. That matters more than usual in this category: the buyer list is the asset, and the reason organisers stay on platforms they have outgrown is normally that the list will not come out.

Yes, and do it before you announce anything. Every host listed above attaches one in a few clicks with HTTPS included, and you are about to ask strangers to type card details into a page. A name they recognise as yours does most of that reassuring on its own. The HTTPS half is not merely cosmetic here either, because the check-in scanner cannot open a camera without a secure address.

No. Everything happens in a browser tab: you describe what you want in the chat, and Lovable writes and previews the code. The setup section above covers the handful of things you connect first: an account, a plan, and your own Supabase project.

A sketch on the Free plan is fine for testing an idea, with no real backend behind it. A project connected to your own Supabase account is the one you can actually launch, with real logins, real data, and your own domain.

Build credits reset every day (Free) or on your billing cycle (paid plans). If you run out mid-session, the app you’ve built stays exactly as it is. You either wait for the reset or move up a credit tier to keep going right away.

References

Sources checked August 2026
  1. 01Tickets for Live Entertainment Events (CRS report R48179, April 2026 update). everycrsreport.com (CRS report updated April 2026)
  2. 02Event Ticket Sales: Market Characteristics and Consumer Protection Issues, U.S. GAO. gao.gov (published 2018)
  3. 03Pricing (service fee and payment processing per ticket), Eventbrite. eventbrite.com
  4. 04Pricing (per-ticket fee, free events, Stripe option), Universe. universe.com
  5. 05Pricing (flat per-ticket fee, low-price and box office rates), TicketSpice. ticketspice.com
  6. 06Pricing (booking fee, charity rate, free events), Humanitix. humanitix.com
  7. 07Pricing (Pro plan, egress, backups, free-tier pause), Supabase. supabase.com
  8. 08Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
  9. 09Row Level Security, Supabase docs. supabase.com
  10. 10Storage access control, Supabase docs. supabase.com
  11. 11Sign up, Lovable. lovable.dev
  12. 12Subscription plans (Free, Pro, Business), Lovable docs. docs.lovable.dev
  13. 13Connect Supabase, Lovable docs. docs.lovable.dev
  14. 14GitHub integration, Lovable docs. docs.lovable.dev
  15. 15Deployment, hosting, and ownership, Lovable docs. docs.lovable.dev
  16. 16Version history and reverting, Lovable docs. docs.lovable.dev
  17. 17Preview toolbar (Select elements), Lovable docs. docs.lovable.dev
  18. 18AI features and model selection, Lovable docs. docs.lovable.dev
  19. 19Custom domains, Lovable docs. docs.lovable.dev

This guide is general information, not legal, tax, or accounting advice. Consumer rules on how ticket prices and fees must be displayed, what refunds are owed when an event is cancelled, and how attendee data may be used vary by country and by state, so check your own rules before you sell anything. Third-party fees, plan terms, and market rates are quoted from the sources above and were last checked on the date shown. Vendors change them without notice, so confirm before you budget. Build hours and the cost estimates derived from them are our own estimates, not quotes. Lovable is a product of Lovable Labs. Verify current capabilities and pricing before relying on them.