Loading…

    Create a Booking App:
    Appointments Without Code

    Describe your business and Fastshot builds a booking app for iOS and Android: services, staff, open time slots, customer sign-in, reminders before each appointment and an admin calendar. The database refuses double bookings.

    Services and staffOpen time slotsRemindersNo double bookings
    TL;DR

    How do I create a booking app?

    Describe your services and opening hours to Fastshot and approve the plan. In about 5 to 7 minutes you have an app where customers pick a service, a staff member and a time slot, and sign in with Supabase auth. Reminders go out before each appointment, and a database rule stops two people from booking the same slot.

    Last updated: November 4, 2026

    Who Creates a Booking App, and What It Has to Do

    Salons, barbers, physiotherapists, personal trainers, tutors, photographers, cleaners and studio owners create booking apps. They all sell time. Today they take bookings by phone, message threads and a paper diary, and lose money to no-shows and to the evening spent matching everyone's availability.

    A booking app has a precise job. It must show only times that are really open, take a booking in under a minute, remind the customer before it happens, and let the owner see the day at a glance. The hard part is the first one. Open times are not stored anywhere. The app calculates them from working hours, minus days off, minus bookings already made, with each service's duration in mind.

    The second hard part is accounts. Customers need to see and cancel their own bookings and nobody else's, while staff see their own calendar and the owner sees all. That is a database rules problem, and Fastshot solves it with Supabase auth and access policies instead of hiding buttons. Sign-in works with email, Google or Apple.

    Your customers then have a booking icon on their home screen, which is more than a link in a bio. They get a push notification the evening before, and they can rebook with one tap from their history.

    The Screens a Booking App Needs

    Customer screens first, then the ones for the owner and staff.

    Service menu

    Each service shows a name, duration, price and short description. Services are grouped, for example Cuts, Colour and Treatments.

    Choose a person

    A list of staff with photo and specialties, plus an "any available" option for customers who only care about the time.

    Pick a date and time

    A week strip and a grid of open slots for the chosen day. Taken times are not shown at all, so a customer cannot tap one.

    Confirm

    A summary of service, person, date, time and price, a notes field and a Book button. The result screen repeats the details and the cancellation rule.

    My bookings

    Upcoming and past bookings. Upcoming ones have Cancel and Reschedule buttons, past ones have Book again.

    Staff calendar

    A day view of the logged-in staff member's appointments with customer name, service and notes, and a button to mark a booking completed or no-show.

    Owner admin

    Edit services, set weekly working hours per person, add time off, and see all bookings across staff.

    Profile

    Name, phone number, notification settings and a delete-account button.

    The Supabase Tables Behind a Booking App

    Times are stored as timestamptz, which Postgres keeps in UTC and converts for display.

    TableKey columnsWhat it stores
    profilesid, full_name, phone, role (customer, staff, owner)Every signed-in person and what they may open
    servicesname, group_name, duration_min, buffer_min, price_cents, deposit_cents, is_activeWhat you sell, with the length of time each takes
    staffprofile_id, display_name, photo_url, specialties, is_activePeople who can be booked
    staff_servicesstaff_id, service_idWhich person offers which service
    availability_rulesstaff_id, weekday, start_time, end_timeRepeating weekly working hours
    time_offstaff_id, starts_at, ends_at, reasonHolidays and blocked hours that remove slots
    bookingscustomer_id, staff_id, service_id, starts_at, ends_at, status, notes, exclusion constraint on (staff_id, time range from starts_at to ends_at)Every appointment; the exclusion constraint is what stops a double booking
    business_settingstimezone, cancel_window_hours, slot_step_minBusiness-wide rules such as how late a customer may cancel
    reviewsbooking_id, rating, commentRatings left after a completed booking

    A Ready-to-Paste Prompt for a Booking App

    Describe your own services and opening hours.

    Create an appointment booking app for Studio Mira, a hair salon with three stylists, for iOS and Android. Soft blush and charcoal colors, rounded buttons.
    
    Customer flow: service menu (cut 45 min, colour 120 min, treatment 30 min) -> choose a stylist or Any available -> pick a date and see only open time slots in 15 minute steps -> confirm with notes -> booking confirmation. Open slots come from each stylist's weekly hours minus time off minus existing bookings, using the service duration plus a 10 minute buffer.
    My bookings: upcoming with Cancel (allowed until 24 hours before) and Reschedule; past with Book again.
    Staff view: day calendar of my appointments, mark completed or no-show.
    Owner admin: edit services and prices, set weekly hours per stylist, add time off, see every booking.
    
    Backend with Supabase: profiles, services, staff, staff_services, availability_rules, time_off, bookings, business_settings, reviews. Add an exclusion constraint on bookings that rejects overlapping time ranges for the same staff_id, from starts_at to ends_at including any buffer, so two people cannot take overlapping slots. Customers can read and cancel only their own bookings. Sign in with email, Google or Apple, and include delete account in the profile.
    Notifications: remind the customer one hour before the appointment and tell the stylist when a new booking arrives.

    How to Create a Booking App Step by Step

    1

    List your services with real durations

    Write each service with its length in minutes and any gap you need afterwards. Slot calculation depends on these numbers, so a 45-minute cut that really takes an hour will cause overlaps in the diary.

    2

    Approve the plan and confirm working hours

    Fastshot may ask who works which days. Answer with the weekly pattern for each person. The plan lists the customer, staff and owner screens, and you can ask for Fridays or a lunch break to be handled differently.

    3

    Book yourself in the preview

    Open the live preview and go through the customer path. Pick a service, a stylist, tomorrow at 10:00. Then try to book the same stylist at the same time from a second browser tab. The second attempt should fail or show the slot gone.

    4

    Connect Supabase auth and set the roles

    Connect the backend, sign up with Apple, Google or email, and set your own profile role to owner. Create a test customer account and check that it cannot open the owner admin or see other people's bookings.

    5

    Turn on appointment reminders

    Enable push notifications and install the build on your phone. With the backend connected, the app can send a reminder an hour before each booking and notify the stylist of new ones. Book a slot ten minutes ahead to see it arrive.

    6

    Publish and move your bookings over

    Publish with your Apple Developer account ($99 a year) and Google Play account ($25 one-time). Add the store links to your Instagram bio, door sign and confirmation texts, and move regulars across by booking their next visit in the app.

    Booking Apps Built With Fastshot

    Community apps that take reservations and appointments.

    Medibook

    Search doctors and clinics by specialty, see upcoming appointments and book a consultation. See Medibook in the gallery.

    Villabook

    Reserve a luxury villa stay by the day, night or week. See Villabook in the gallery.

    Glowify

    A skincare clinic app with a product catalog and appointment booking. See Glowify in the gallery.

    Frequently Asked Questions

    Is there an app for making appointments?

    Yes, many. General marketplaces list many businesses, while an app of your own lists only you. If you want your customers on your own branded icon, with your rules for cancellations and your staff, create a booking app with Fastshot and publish it under your name.

    How does the app stop two people booking the same slot?

    The bookings table has an exclusion constraint on the staff member and the time range from starts_at to ends_at, so Postgres rejects an overlapping insert whatever the app does, even when services have different lengths. The loser sees a message and picks another time.

    How do I build a booking site for my customers?

    Press Start Building Free, paste your service list and see the working app before you spend anything. Fastshot makes mobile apps for iOS and Android, so customers book from an icon on their phone. Store fees apply only when you publish.

    Do customers need to sign up before booking?

    A booking needs an identity so the customer can find, cancel and be reminded of it. They can browse services without an account and sign in at the confirm step with email, Google or Apple. If the app offers Google sign-in, Apple's guideline 4.8 expects an equivalent privacy-focused option, and Sign in with Apple fills it.

    Can I take deposits or payments?

    The services table has a deposit_cents column, so the app shows the deposit and the balance. A haircut or a lesson is a service consumed outside the app, and Apple's guideline 3.1.3(e) says those payments use methods other than in-app purchase. Many businesses start by collecting payment at the appointment.

    How do time zones work?

    Postgres timestamptz columns store each appointment as an exact moment and show it in the viewer's zone. The business_settings table holds your own time zone, which is used when working hours such as 9:00 to 17:00 are turned into slots. That keeps customers who travel from seeing the wrong hour.

    Can staff manage their own calendar?

    Yes. Each stylist signs in, sees only their appointments, and can mark them completed or no-show. The owner role sees every person. Database policies enforce this, so it holds even if someone tries to open a screen they should not.

    Create Your Booking App Today

    Describe your services and get an iOS and Android booking app with slots, reminders and customer sign-in.

    No coding needediOS and Android

    About the Author

    Elvira Dzhuraeva is an expert in AI mobile app development and React Native. A former Senior Product Manager at Google specializing in AI/ML and Generative AI, she is the Founder of Fastshot (YC-backed) and a founding contributor to Kubeflow.

    AI Mobile App DevelopmentReact NativeAI Developer ToolsVibecodingAI/ML Ops