Bookings & Scheduling

Booking App Template

A public booking page, real availability per staff member, customer accounts and an admin calendar. A starting point for salons, clinics, tutors, studios and any business that sells time.

What is the Booking App Template?

This booking app template describes an appointment scheduling app for a service business. Customers pick a service, a staff member and an open time slot, then confirm; staff and admins manage availability, time off and the day’s bookings from a calendar. The template defines the data model, the slot rules and the screens as a starter prompt. Paste it into Greta.sh and it builds the full-stack app with a database and sign-in, ready to deploy on your own domain.

Greta.sh Editorial Team · Updated October 14, 2026

What you get

Everything below is in the starter prompt, so the first build already includes it.

Public booking page

Customers choose a service, then a staff member or “anyone available”, then an open slot, and confirm in a few clicks.

Real availability

Open slots are calculated from each staff member’s weekly hours, time off, service length, buffer time and existing bookings, so double bookings cannot happen.

Customer accounts

Customers sign in to see upcoming and past bookings and to reschedule or cancel within your cancellation window.

Admin calendar

Day and week views per staff member, with status changes for confirmed, completed and no-show.

Services and staff setup

Admins manage services, prices, durations and which staff offer which service, without touching code.

Booking rules

How far ahead customers can book, the minimum notice, and the cancellation window, all set in one settings screen.

The data model

7 entities. Every app also gets an id and created and updated timestamps on each record.

BusinessSettings

One record of rules for the whole business.

FieldType
nametext
timezonetextfor example Europe/London
bookingWindowDaysnumberhow far ahead customers can book
minNoticeHoursnumber
cancellationHoursnumber

Service

Something a customer can book.

FieldType
nametext
descriptionlong text
durationMinutesnumber
bufferMinutesnumbergap kept free after each booking
pricenumber
activeboolean

StaffMember

A person whose time can be booked.

FieldType
nametext
emailemail
roleenumadmin | staff
serviceIdslist → Service

AvailabilityRule

A recurring block of working hours.

FieldType
staffIdref → StaffMember
weekdayenummon to sun
startTimetime
endTimetime

TimeOff

A one-off period when a staff member is unavailable.

FieldType
staffIdref → StaffMember
startsAtdatetime
endsAtdatetime
reasontextoptional

Customer

A person who books appointments.

FieldType
nametext
emailemailunique, used to sign in
phonetext
noteslong textvisible to staff only

Booking

One appointment.

FieldType
serviceIdref → Service
staffIdref → StaffMember
customerIdref → Customer
startsAtdatetime
endsAtdatetime
statusenumconfirmed | cancelled | completed | no_show
customerNotestextoptional

Main screens

The pages the first build includes, in the order a user meets them.

  1. 01

    Booking page

    Public list of active services with duration and price.

  2. 02

    Pick a time

    Choose a staff member or “anyone available”, then a day and an open slot.

  3. 03

    Confirm

    Name, email, phone and notes, then a confirmation screen with the booking details.

  4. 04

    My bookings

    Signed-in customers see upcoming and past bookings and can reschedule or cancel.

  5. 05

    Admin calendar

    Day and week views per staff member, with booking status changes.

  6. 06

    Bookings list

    Every booking with filters for date, staff, service and status.

  7. 07

    Services and staff

    Manage services, staff, weekly hours and time off.

  8. 08

    Settings

    Business name, timezone, booking window, minimum notice and cancellation window.

The starter prompt

Copy it, edit anything that does not fit your business, and paste it into Greta. Or use the button below, which opens Greta with this prompt already filled in.

Starter prompt
Build a full-stack appointment booking web app for a service business.

Data model:
- BusinessSettings: name, timezone, booking window in days, minimum notice in hours, cancellation window in hours
- Service: name, description, duration in minutes, buffer in minutes after each booking, price, active
- StaffMember: name, email, role (admin or staff), services they offer
- AvailabilityRule: staff member, weekday, start time, end time
- TimeOff: staff member, starts at, ends at, reason (optional)
- Customer: name, email, phone, notes visible to staff only
- Booking: service, staff member, customer, starts at, ends at, status (confirmed, cancelled, completed, no_show), customer notes

Slot rules: a slot is open only if it falls inside the staff member's availability rules, does not overlap their time off, leaves room for the service duration plus buffer before the next booking, is at least the minimum notice from now, and is within the booking window. Never allow two bookings for the same staff member to overlap. Show times in the business timezone.

Screens:
1. Public booking page listing active services with duration and price.
2. Time picker: choose a staff member or "anyone available", then a day, then an open slot.
3. Confirm step asking for name, email, phone and notes, then a confirmation screen.
4. Customer sign-in and a My bookings page with upcoming and past bookings. Customers can reschedule or cancel until the cancellation window.
5. Admin calendar with day and week views per staff member, and actions to mark a booking completed or no-show.
6. Bookings list with filters for date range, staff, service and status.
7. Services and staff management, including weekly hours and time off.
8. Settings for the business rules.

Permissions: admins manage everything. Staff see their own calendar and bookings. Customers only see their own bookings.

Seed the database with a business called "Northside Studio", 4 services, 3 staff members with weekday hours, and 20 bookings over the next two weeks. Use a friendly, mobile-first design for the public pages and a clean dashboard layout for admin.

How to customise it

After the first build, describe each change in plain English and Greta updates the app. Common next steps:

Take deposits or full payment

Ask Greta to connect Stripe so customers pay a deposit or the full price when they confirm.

Send confirmations and reminders

Connect Resend and send a confirmation email on booking and a reminder the day before.

Add an intake form

Ask for service-specific questions at the confirm step, such as allergies for a salon or goals for a coaching session.

Support more than one location

Add a Location entity, assign staff and services to locations, and let customers pick one first.

Notify your team

Connect Slack and post new and cancelled bookings to a team channel.

Deploy on your domain

Deploy to a live URL, connect your own domain, and link the booking page from your website.

Frequently asked questions

+What kinds of businesses is this booking template for?

Any business that sells time with a specific person: salons, clinics, tutors, coaches, consultants, studios and repair shops. Rename the services and staff in the starter prompt and the rest of the model still fits.

+How does it prevent double bookings?

The starter prompt tells Greta to calculate open slots from each staff member’s hours, time off, service length, buffer and existing bookings, and to never allow two bookings for the same person to overlap. Test it by booking the same slot twice once the app is built.

+Can customers pay when they book?

Not in the first build, which keeps the template simple. Ask Greta to connect Stripe and take a deposit or the full price at the confirm step.

+Does it handle time zones?

The template stores a single business timezone and shows every time in it, which is right for a business with one location. If customers book remotely from other time zones, ask Greta to show times in the customer’s local timezone as well.

+Do I own the code Greta generates from this template?

Yes. Greta generates real application code that you can download at any time, host anywhere, or hand to a developer to extend. Starting from a template does not tie the app to the template.

+Is it free to build from this template?

You can start on the Greta.sh free tier without a credit card. Paste the starter prompt, review the app Greta builds, and decide on a paid plan only when you need more. See the pricing page for current plan limits.

More templates and guides