How customers book, reschedule, and cancel

Customers reach booking three ways:

• **Public link** — share `/book-appointment/<orgId>/<serviceId>`. Anyone can pick a day, see open times, and book. Paid services route through Stripe Checkout; free services confirm instantly.
• **Their Turtini account** — signed-in customers see every provider they've ever booked at **/me/appointments** (account-for-life), and those appointments flow into their unified calendar automatically.
• **Your front desk** — staff book on a customer's behalf from **Scheduling → Schedule → New appointment**.

Every confirmed appointment sends a **confirmation email and text** with a reschedule/cancel link. The link is single-use (it rotates on every change), so a customer can self-serve without an account. Signed-in customers can also reschedule or cancel directly from /me/appointments. Reschedules re-check provider + resource availability, so a moved appointment never collides.