Local business apps

Build a Booking App with a Coding Agent

See a working booking app built on Userland. Try the live demo, copy the prompt, and build yours for lessons, sessions, or appointments.

Open live demo

booking-demo.apps.userland.fun
Home page of the Wrenhouse Music Studio demo, listing piano and voice lessons with their lengths and prices

Live demo

Open the demo at booking-demo.apps.userland.fun. Pick a lesson and a time, send a request, then open the owner’s side to confirm it. Only you see the requests you add.

What this app does

  • Lists your services with length and price
  • Shows open times for the next two weeks, based on your hours
  • Takes booking requests with contact details and a note
  • Stops two people from requesting the same time
  • Shows each customer a confirmation with a reference number
  • Gives you a private inbox to confirm, decline, or cancel requests
  • Lets you edit services, lengths, prices, and what shows on the booking page
  • Keeps a history of every request and status change

Who this is for

This app is useful for:

  • Music teachers
  • Tutors and coaches
  • Consultants
  • Salons and stylists
  • Photographers
  • Repair and home services
  • Yoga and fitness studios

App spec

User roles

  • Public visitor, who requests a time
  • Owner, who signs in with the owner role

Screens

  • Home page with services and prices
  • Booking form with service, day, and time
  • Confirmation page
  • Owner inbox with New, Confirmed, Declined & cancelled, and All tabs
  • Services editor
  • Activity history

Managed resources

  • Managed data for services and bookings
  • App sign-in with an owner role
  • Activity log entries for requests, status changes, and service edits

Routes / 9

RoutePurpose
/Home page with the list of services
/bookBooking form with service, day, and open times
/bookedConfirmation page for one request
/studioOwner inbox with New, Confirmed, Declined & cancelled, and All tabs
/studio/bookings/{id}/statusConfirms, declines, cancels, or reopens a request
/studio/lessonsOwner page to add and edit services, lengths, and prices. Its add form saves a new service here.
/studio/lessons/{id}Saves changes to one service
/studio/lessons/starterAdds starter services to a new studio with none yet
/studio/activityRecent requests and status changes

Data model

Service

  • id
  • name
  • summary
  • length in minutes
  • price in cents
  • display order
  • shown on the booking page

Booking

  • id
  • reference number
  • service
  • service name, length, and price when requested
  • start time
  • end time
  • customer name
  • customer email
  • customer phone
  • student details
  • message
  • status (new, confirmed, declined, cancelled)
  • history

Build it with this prompt

Paste this into your coding agent to build your own version, then ask it to change the copy, design, and data for your business.

booking-app-prompt.txt
Build and publish a booking app for my business on Userland.

What I need:
[Describe your business in your own words: what customers book, how long each service takes and what it costs, your opening hours, and what you need to know about each customer. For example: "Private piano lessons, 30 or 45 minutes, $35 or $60. Weekday afternoons and Saturday mornings. Ask the student's age and experience."]

How to work:
1. Read https://docs.userland.fun/llms.txt first and follow the Userland docs. Don't guess how Userland works.
2. Start from the booking example at https://github.com/dwrtz/userland-public/tree/main/examples/booking-app. Replace its made-up studio with my business and remove its demo mode.
3. If I haven't filled in "What I need", ask me first. Ask anything else you need before you build, then explain your plan in plain language: the pages, how customers request a time, who can sign in, and what information gets saved.
4. Build the app. Only I should see bookings: protect the owner pages with a sign-in and an owner role. Keep API keys and secrets on the server, never in the browser.
5. Publish with the Userland CLI. If you need to sign in, run userland login and I'll approve it in my browser. Then set me up as the owner so I can sign in and see requests.
6. When it's live, tell me the link, how customers book and how I confirm requests, anything that needs a paid plan, and how to undo a release if something breaks. Note the app ID and release ID in the project README so you can publish updates later.

Implementation notes

Pages load as plain HTML from the server. The home page, booking form, confirmation, and owner pages work without JavaScript. Choosing a service or a day reloads the form with the open times for that choice.

Services and bookings are saved in Userland managed data. Each booking keeps a copy of the service name, length, and price at the moment it was requested, so later price changes don’t rewrite past bookings. Each booking also gets a short reference number like WH-7K3Q9M.

Open times come from your hours. Opening hours, time zone, minimum notice, and how far ahead people can book live in one small settings block. The form shows the next two weeks and hides times that are already requested or confirmed.

Double bookings are checked right before saving. When a request comes in, the app looks at the existing bookings again and only saves it if the time is still free. If someone else just took it, the customer is asked to pick another time.

The owner pages are locked. Every owner page and button checks for a signed-in account with the owner role. Signed-out visitors are sent to sign in and brought back afterwards, and any other account sees an “owner only” page. Nobody can create an account on their own; you invite the owner.

Forms are protected against common abuse. Inputs are checked and length-limited, a hidden field catches bots, forms only accept posts from the app’s own pages, and everything people type is escaped before it’s shown.

Every booking leaves a trail. Requests, status changes, and service edits are written to the app’s activity log with record numbers only, never names or contact details. You can read it in the Userland console or with userland apps events. On Starter and above, traffic analytics show visits, popular pages, and where visitors came from.

The demo runs in demo mode. One file lets demo visitors open the owner side without signing in. Each visitor sees made-up sample bookings plus only the requests they added, their changes stay private to them, and everything they add is cleared after a day. Demo mode only switches on at the demo address, and the README shows how to remove it.

Variants

You can customize this app into:

  • Piano or voice teacher booking lessons by length, with a short first lesson for new students
  • Tutor booking subject sessions and asking for the student’s grade and goals
  • Consultant booking discovery calls and longer strategy sessions
  • Coach booking intro calls and follow-up sessions
  • Salon booking cuts and color, with longer times for color appointments
  • Photographer booking portrait sessions and asking where to meet
  • Repair business booking home visits with an address and a short description of the problem
  • Yoga studio booking private classes and small-group sessions

FAQ

What plan does this app need?

The Free plan. It uses server pages, one owner sign-in role, and two kinds of saved records (services and bookings), all within Free limits. Free keeps up to 1,000 saved records per app and 10,000 requests a month across your account, which suits a small studio. Your own domain, a named address like yourstudio.apps.userland.fun, traffic analytics, and scheduled reminder emails need Starter or above; the booking app works without them.

How do I see and confirm bookings?

Your coding agent sets you up as the owner. You get an invite link, choose a password, and sign in at /studio on your app. New requests wait in the inbox; one click confirms, declines, or cancels them, and the time opens up again when a request is declined or cancelled.

Does it send confirmation emails?

Not by itself. Each request shows the customer’s email and phone as links, so you reply from your own email. If you want the app to send emails, your agent can connect an email service and keep its API key on the server.

Can customers see other people's bookings?

No. Customers see only their own confirmation page. The inbox, services editor, and activity history need an owner sign-in. In the public demo, each visitor sees made-up sample bookings plus only the requests they added.

How does it stop double bookings?

Open times are worked out from your hours and the requests you already have. Right before a request is saved, the app checks the time again, so two people can’t take the same slot. Declined and cancelled requests free the time.

How do I undo a change?

Every publish creates a new release, and the last good one is a command away. Your agent runs userland apps rollback to put an earlier release back live. Bookings, services, and your owner account stay as they are. Free keeps your last 2 releases; Starter keeps 10.

Build yours.

Paste a prompt into your coding agent and describe how your business works. Your agent builds the app. Userland runs it.