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.
| Field | Type |
|---|---|
| name | text |
| timezone | textfor example Europe/London |
| bookingWindowDays | numberhow far ahead customers can book |
| minNoticeHours | number |
| cancellationHours | number |
Service
Something a customer can book.
| Field | Type |
|---|---|
| name | text |
| description | long text |
| durationMinutes | number |
| bufferMinutes | numbergap kept free after each booking |
| price | number |
| active | boolean |
StaffMember
A person whose time can be booked.
| Field | Type |
|---|---|
| name | text |
| role | enumadmin | staff |
| serviceIds | list → Service |
AvailabilityRule
A recurring block of working hours.
| Field | Type |
|---|---|
| staffId | ref → StaffMember |
| weekday | enummon to sun |
| startTime | time |
| endTime | time |
TimeOff
A one-off period when a staff member is unavailable.
| Field | Type |
|---|---|
| staffId | ref → StaffMember |
| startsAt | datetime |
| endsAt | datetime |
| reason | textoptional |
Customer
A person who books appointments.
| Field | Type |
|---|---|
| name | text |
| emailunique, used to sign in | |
| phone | text |
| notes | long textvisible to staff only |
Booking
One appointment.
| Field | Type |
|---|---|
| serviceId | ref → Service |
| staffId | ref → StaffMember |
| customerId | ref → Customer |
| startsAt | datetime |
| endsAt | datetime |
| status | enumconfirmed | cancelled | completed | no_show |
| customerNotes | textoptional |
Main screens
The pages the first build includes, in the order a user meets them.
- 01
Booking page
Public list of active services with duration and price.
- 02
Pick a time
Choose a staff member or “anyone available”, then a day and an open slot.
- 03
Confirm
Name, email, phone and notes, then a confirmation screen with the booking details.
- 04
My bookings
Signed-in customers see upcoming and past bookings and can reschedule or cancel.
- 05
Admin calendar
Day and week views per staff member, with booking status changes.
- 06
Bookings list
Every booking with filters for date, staff, service and status.
- 07
Services and staff
Manage services, staff, weekly hours and time off.
- 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.
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.