Guides / How to build

How to Build a Booking App: Slots, Availability, Reminders and Deposits

How to build a booking app with AI: services, availability and time slots, double-booking rules, time zones, reminders, deposits, and when Calendly is enough.

Mythex Team · 2026-09-29 · 6 min read

To build a booking app, you need four things working together: a list of what can be booked (services, rooms, staff), rules for when each is available, a booking flow that only offers genuinely free slots, and a private view where the business manages what came in. An AI app builder can produce a working first version from a short description in minutes; the real work is deciding the rules — slot length, buffers, cancellations, time zones — and testing that double bookings are impossible.

Start by deciding what "a booking" means for you

Booking apps look alike on the surface but differ a lot underneath. Answer these first:

  • What is booked? A service (a haircut), a person (a tutor), a resource (a meeting room, a court, a van), or a place at a session (a yoga class with 12 spots).
  • How long does it take? Fixed per service, or chosen by the customer?
  • Who provides it? One person, several staff with their own hours, or no one (a room)?
  • What happens after booking? Instant confirmation, or a request the owner approves?
  • Is money involved? Free, pay on the day, deposit up front, or full prepayment?

"Request a time, owner confirms by email" is much simpler to build than "instant booking against three staff calendars with deposits". Both are valid — pick the one you actually need for version one.

What the app needs

Data

TableKey fields
ServicesName, duration, price, buffer after, active yes/no
Staff or resourcesName, which services they offer
AvailabilityWeekly working hours per staff member, plus exceptions (holidays, one-off closures)
BookingsService, staff, start time, end time, customer details, status (pending, confirmed, cancelled), payment status
CustomersName, email, phone, notes — optional at first; can live on the booking

Storing the end time on every booking, not just the start, makes overlap checks much simpler.

Pages

  • Public: service list, slot picker, booking form, confirmation page, and a cancel or reschedule link.
  • Private (owner or staff): today's schedule, upcoming bookings, a way to block time off, and settings for services and hours.

Permissions

Customers should only see free or busy slots — never other customers' names. Staff might see only their own schedule; the owner sees everything. Write this down, because it decides whether you need logins and roles. Our guide on adding login to your app covers the options.

The hard parts, and how to handle them

Double bookings

The classic bug: two people load the page, both see 10:00 free, both book it. The fix is to check again on the server when the booking is saved and refuse it if anything now overlaps. Ask for this explicitly:

When saving a booking, re-check on the server that no confirmed or pending booking for the same staff member overlaps the requested time (including the buffer). If one does, reject it and show "That time was just taken — please pick another."

Then test it with two browser windows.

Time zones

Store every time in UTC and convert for display. Decide whose time zone the booking page shows — usually the business's for in-person services, and the customer's for online calls — and label it on the page. Test a booking across a daylight-saving change.

Buffers, notice and limits

Common rules worth deciding up front: a buffer between appointments, minimum notice ("no bookings less than 2 hours ahead"), how far ahead people can book, and a daily cap. Each is one sentence in a prompt; leaving them out means the AI picks defaults for you.

Cancellations and no-shows

Give every confirmation a cancel link with a unique token so customers don't need an account. Decide your cancellation window and whether deposits are refundable, and show that policy before payment.

Reminders

Reminder emails or texts need something that runs on a schedule ("every 15 minutes, send reminders for bookings starting in 24 hours"). Check how your builder and hosting handle scheduled jobs. If they don't, use an external scheduler that calls an endpoint in your app, or send the confirmation email with a calendar invite attached so the customer's own calendar reminds them. See how to send emails from your app for the provider side.

Deposits and payments

The usual pattern with Stripe:

  1. Customer picks a slot; the app creates a pending booking that holds the slot for a short time (say 15 minutes).
  2. The app sends them to Stripe Checkout for the deposit.
  3. Stripe notifies your app with a webhook when payment succeeds; the booking becomes confirmed.
  4. If payment doesn't happen in time, the pending booking expires and the slot frees up.

Stripe's standard pricing is a percentage plus a fixed fee per successful card payment, with no monthly fee (as of September 2026); rates vary by country, so check Stripe's pricing page for yours. Use test mode and test cards until everything works. Our guide to adding payments goes step by step.

A first prompt that works

Build a booking app for Northside Barbers. Services: Haircut (30 min, $25), Beard trim (15 min, $12), Haircut + beard (45 min, $32). Two barbers, Sam and Ali, each working Tuesday–Saturday 9:00–18:00. Customers pick a service, then a barber or "any barber", then see only free 15-minute start times for the next 14 days, and enter name, phone and email. Save bookings in a database, with a 10-minute buffer after each appointment, and re-check availability when saving to prevent double booking. Show a confirmation page with a cancel link. The owner has a private page listing today's and upcoming bookings, can cancel a booking and can block out time. Times are in the shop's local time zone. Clean, mobile-first design.

It names the services, staff, hours, rules and the owner's view — everything the AI would otherwise guess.

Build steps

  1. Core booking flow first. Services → slot → form → saved booking → confirmation. Nothing else until this works on a phone.
  2. Owner view. Today's list, upcoming list, cancel, block time.
  3. Protect the owner pages. Add login before real data goes in.
  4. Rules. Buffers, notice period, booking horizon, holidays.
  5. Email. Confirmation with a calendar invite and cancel link.
  6. Deposits if you need them, in Stripe test mode first.
  7. Test the edge cases. Two windows booking the same slot, a booking across midnight, a daylight-saving date, a cancelled booking freeing its slot.
  8. Publish, then make a real booking yourself before sharing the link.

Common mistakes

  • Checking availability only in the browser. It looks right and still double-books.
  • Storing local times without a time zone. It works until the clocks change.
  • Showing customer names in the public calendar. Only show free or busy.
  • Building staff scheduling, loyalty points and SMS on day one. Launch the core flow, then add what customers actually ask for.
  • No way for the owner to block time. The first sick day will create no-shows.

When Calendly (or similar) is the better choice

If you are one person sharing your availability for calls, a scheduling tool is hard to beat. As of September 2026, Calendly's free plan covers one event type, one calendar connection and one-on-one scheduling with a customizable booking page, and paid plans add more event types and team features. Tools like that connect to your existing calendar out of the box, which a custom app has to be built to do.

Build your own when you need rules those tools don't support, several bookable resources, your own branding throughout, bookings connected to other data (customers, orders, memberships), or you are building a booking product to sell to others.

Building it with Mythex

On Mythex you describe the booking app in chat, it builds it in a live preview, and it adds a Postgres database when bookings need to be saved. The booking page use case in the docs suggests starting with a request form and an admin list, then adding the rest. Be clear-eyed about what is built in and what you connect yourself: Mythex has no built-in calendar sync, SMS reminders or deposit product. Email goes through your own provider, deposits through your own Stripe keys stored as project secrets (Stripe recipe), and double-booking and time-zone rules are things you specify and test, as above.

The /test command has the agent click through the booking flow in the preview and report what breaks. For a starting prompt, try the barbershop booking website or meeting booker templates, or browse all app templates.

Questions

What features does a booking app need?

At minimum: a list of services with durations, a way to show only free time slots, a booking form, a confirmation, and a private page where the business sees and manages bookings. Reminders, deposits and staff calendars come next.

How do I stop double bookings?

Check availability on the server at the moment the booking is saved, not only when the page loads, and reject the booking if the slot was taken in the meantime. Test it by trying to book the same slot from two browser windows.

Can a custom booking app take deposits?

Yes. The usual approach is to send the customer to a Stripe Checkout page for the deposit and only confirm the booking once the payment succeeds. You need your own Stripe account and keys.

Should I build a booking app or use Calendly?

If one person needs to share their availability and nothing about the flow is unusual, a scheduling tool like Calendly is faster and cheaper to run. Build your own when you need your own rules, several resources, your branding throughout, or bookings tied to other data you keep.

Keep reading

  • How to Add Login to Your App: Passwords, Magic Links, Google and Roles — How to add user login to an app you built: email and password, magic links, Sign in with Google, roles and permissions, and keeping sessions secure.
  • How to Add Payments to Your App: Checkout, Subscriptions and Webhooks — How to take payments in an app you built: Stripe Payment Links vs Checkout vs subscriptions, webhooks, test mode, going live, and what to know about tax.
  • How to Build a Blog with AI: Posts, Editor, SEO and Hosting — Build your own blog with an AI app builder: posts, an editor, categories, newsletter signup and SEO search engines can read, plus when a platform fits better.
  • How to Build a Budget App: Categories, Transactions, Imports and Reports — Build a personal or household budget app: budgeting methods, transactions, CSV imports vs bank connections, handling money correctly, and privacy.
  • How to Build a Changelog Page: Entries, Tags, RSS and 'What's New' — How to build a product changelog page: what each entry needs, files vs database, tags, RSS, email updates, an in-app 'what's new' badge, and writing tips.
  • How to Build a Church Website: Services, Sermons, Events and Giving — How to build a church website that helps visitors find you: service times, sermons, events, online giving, privacy for members and children, and an AI prompt.

Start building free · Templates · Docs