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.
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
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.
Customer screens first, then the ones for the owner and staff.
Each service shows a name, duration, price and short description. Services are grouped, for example Cuts, Colour and Treatments.
A list of staff with photo and specialties, plus an "any available" option for customers who only care about the 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.
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.
Upcoming and past bookings. Upcoming ones have Cancel and Reschedule buttons, past ones have Book again.
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.
Edit services, set weekly working hours per person, add time off, and see all bookings across staff.
Name, phone number, notification settings and a delete-account button.
Times are stored as timestamptz, which Postgres keeps in UTC and converts for display.
| Table | Key columns | What it stores |
|---|---|---|
| profiles | id, full_name, phone, role (customer, staff, owner) | Every signed-in person and what they may open |
| services | name, group_name, duration_min, buffer_min, price_cents, deposit_cents, is_active | What you sell, with the length of time each takes |
| staff | profile_id, display_name, photo_url, specialties, is_active | People who can be booked |
| staff_services | staff_id, service_id | Which person offers which service |
| availability_rules | staff_id, weekday, start_time, end_time | Repeating weekly working hours |
| time_off | staff_id, starts_at, ends_at, reason | Holidays and blocked hours that remove slots |
| bookings | customer_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_settings | timezone, cancel_window_hours, slot_step_min | Business-wide rules such as how late a customer may cancel |
| reviews | booking_id, rating, comment | Ratings left after a completed booking |
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.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.
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.
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.
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.
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.
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.
Community apps that take reservations and appointments.
Search doctors and clinics by specialty, see upcoming appointments and book a consultation. See Medibook in the gallery.
Reserve a luxury villa stay by the day, night or week. See Villabook in the gallery.
A skincare clinic app with a product catalog and appointment booking. See Glowify in the gallery.
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.
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.
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.
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.
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.
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.
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.
How Fastshot builds the iOS and Android app from one prompt.
Appointment reminders and automatic alerts when a booking changes.
Guest lists and schedules when your bookings are one-off events.
Bring customers back with stamps and rewards after each visit.
Use Cases
Use Cases
Use Cases
Describe your services and get an iOS and Android booking app with slots, reminders and customer sign-in.