Scheduling · App Starter
A public booking page, real availability, and reminders that cut no-shows — generated into a codebase you own.
Describe what people book with you — sessions, consultations, lessons — and Dual7 generates this scheduling app around it: a booking page your customers use without creating an account, a calendar your team actually trusts, and reminder flows that keep slots from dying quietly. All of it code you own.
01 · Data model
Scheduling apps break where the calendar meets reality — double bookings, stale availability, the reschedule that orphans a reminder. These six tables make availability a fact in the database rather than a hope, and every screen reads from them.
| table | what it holds |
|---|---|
services | What can be booked — name, duration, price, buffer time before and after, and which providers offer it. |
providers | The people or resources being booked — each with their own services, working hours, and calendar. |
availability_slots | Concrete bookable windows computed from working hours minus existing bookings — the single source of truth the public page sells from. |
bookings | A customer, a service, a provider, and a time — with status from confirmed through completed, cancelled, or no-show. |
customers | Who books — contact details, booking history, and notes — created on first booking, recognized on return, no account required. |
reminders | Scheduled notifications tied to each booking, cancelled or rescheduled in the same transaction as the booking itself. |
02 · Screens
Customers pick a service, see genuinely available times, and book in under a minute — no account, no back-and-forth. The page reads availability live, so two people can't claim the same slot no matter how simultaneously they try.
Day and week views per provider, with buffers and blocked time visible. Dragging a booking to a new slot updates the customer, reschedules the reminders, and frees the old slot in one transaction.
Confirmation at booking, reminder before the appointment, follow-up after — each on a schedule you define. Reminders are rows tied to bookings, so a cancellation kills its reminders instead of embarrassing you the next morning.
The customer's confirmation link lets them move or cancel within rules you set — a cutoff window, a cancellation policy. Every change is logged, and freed slots return to the public page immediately.
03 · Process
Services, durations, who provides them, when you work, how far ahead people may book. Plain language — the starter turns it into schema and screens.
Add an intake question, change the buffer between sessions, tighten the cancellation window — conversational edits, each landing in real code.
Ship the booking page to production with approval gates and an audit trail, on your infrastructure — your calendar data in your own database.
04 · Fit
A scheduling-link subscription rents you a page whose logo isn't yours and whose data you can't query. This starter is the same convenience as your own app — your domain, your branding, your rules about who books what and when.
Three consultants, one booking page, different services and hours each — and no more relaying times over the phone. Availability computes per provider while the customer just sees times that work.
If appointments are how revenue arrives, the booking flow deserves better than a widget bolted to a website. Own the conversion path end to end: page speed, questions asked, reminder tone — all yours to tune.
Marketplaces, portals, and service platforms all eventually need slots, bookings, and reminders. The starter is that subsystem, done correctly, as code you embed — not a third-party iframe with someone else's uptime.
05 · Yours
Make the booking page yours in Vibe mode: your brand, your service descriptions, intake questions per service — a brief for a consultation, an address for a house call. Adjust the rules that shape your calendar: lead time before a booking, how far out the page sells, buffers per service rather than per provider.
Extend from there in your own codebase: take deposits at booking by wiring a payment provider, sync provider calendars two-way with external calendar services, add group bookings with per-slot capacity, or gate certain services behind approval. The generated app has no runtime dependency on Dual7 — anything your booking flow needs is an edit, not a plan tier.
Scheduling tools price per seat and per feature — reminders on one tier, intake forms on another, your own branding on a third. This starter generates the whole thing as source code in your repository: page, calendar, reminders, policies. A new provider is a row, a new feature is an edit, and your booking history is a table you can query, not an export request.
You operate what you own — hosting, backups, and changes are yours. The governed pipeline keeps that responsible: gates before changes hit the live booking page, an audit trail of what changed, and regeneration when you restructure. For a business whose revenue walks in through this page, that control is the feature.
06 · Industries
Session types, date-holding deposits, and mini-session days that sell themselves — booking shaped for photographers, in code you own.
Discovery calls that qualify, paid sessions that collect, and a calendar that protects deep work — scheduling for consultants, in code you own.
Recurring weekly lessons, parents booking for kids, and term packages that track sessions — tutoring scheduling in code you own.
A working scheduling app in code you own: services, providers, availability, bookings, customers, and reminders, with a public booking page, per-provider calendars, reminder flows, and customer self-reschedule. Deployed on your infrastructure, data in your database.
Yes — the public page asks only what the booking needs. A customer record is created on first booking and recognized on return, and the confirmation link handles reschedules without a login. Accounts are an option you can add, not a wall the page starts with.
Availability is computed, not maintained — slots derive from working hours minus existing bookings, and booking a slot is a transaction that fails cleanly for the second person who tries. There is no cached availability to drift out of date.
The flow is built to accept it: add a payment step in Vibe mode and wire the provider of your choice, whether that's full prepayment, a deposit, or a card on file for no-show fees. No percentage of your bookings goes to the scheduling layer.
Those verticals have dedicated starters that go deeper than generic booking — clinic for patient records and intake, gym for classes and memberships, salon for stylists and product sales. This starter is the general-purpose base for appointments outside those domains.
No — this is customer-facing appointments. Rostering, shift swaps, and clock-in belong to the employee shift scheduling starter. The two can share your infrastructure, but they're different problems and Dual7 keeps them different apps.
Dual7 App Starters
A public booking page, real availability, and reminders that cut no-shows — generated into a codebase you own. Describe your version to start — the output is a project you own.