Key: white = available · green = booked · grey = blocked or outside notice window · amber badge = pending request (held for 48 hours, not yet blocking).
Error: "End date must be on or after the start date." Warning when a confirmed booking exists: "You have a booking on 25 Nov. Blocking will not cancel it."
Weekly hours4
Day
Available
Hours
Mon
☐
-
Tue
☑
16:00 to 20:00
Wed
☑
16:00 to 20:00
Thu
☑
16:00 to 20:00
Fri
☑
16:00 to 22:00
Sat
☑
09:00 to 21:00
Sun
☑
10:00 to 17:00
Add a second time range per day (for example 09:00 to 12:00 and 15:00 to 18:00). Overlaps are rejected.
Booking rules5
7 days
12 months ahead
60 minutes
2
15 miles
Postcode LS6 1AB. Extra fee over 10 miles shown on services.
Calendar sync6
Connected: Google Calendar (amy@example.com)
Block times when I am busy in my calendar (read)
Add confirmed Popdance bookings to my calendar (write)
Also available: private iCal feed link for your bookings.
Notes
Page header. Explains that availability drives instant book on 07-service-detail.html and 06-teacher-profile.html. Shows sync status and a global Save. Unsaved changes prompt on exit.
Month calendar. Views: month, week, list. Cell states: available, booked (links to 50-teacher-bookings.html), blocked, outside notice window, pending request (links to 48-requests-inbox.html). Click an empty date to open the block dialog preset to that date, drag across dates to block a range. Keyboard accessible, with day labels read as "Saturday 31 October, booked".
Block dates. Range with optional times, private reason, annual repeat. Validation shown beneath. Blocking does not cancel confirmed bookings, it only prevents new ones. Undo toast for 8 seconds after saving.
Weekly hours. Recurring working pattern with up to 2 ranges per day. Times use 24 hour format in UK time, stored in UTC with the teacher's timezone. Default for new teachers: closed until set, with a first-run prompt.
Booking rules. Notice, horizon, buffer, daily cap and travel radius. Travel radius mirrors 45-profile-editor.html and wizard step 4. Rules apply to instant book only; custom requests can still be sent outside them and the teacher decides.
Calendar sync. Two-way via Google and Microsoft OAuth, one-way via iCal feed. Read sync blocks time; write sync adds confirmed bookings with address and customer first name only. Failed sync shows a banner with reconnect.
Calendar defaults to a week list (one day per row) with a month mini-picker. Tap a day to open a bottom sheet with that day's bookings and a "Block this day" action. Weekly hours become an accordion by day. Right-hand cards stack below the calendar.
States
Empty (new teacher): hours not set; banner "Set your weekly hours so customers can book you" and instant book is disabled. Loading: calendar skeleton. Sync error: "We could not reach Google Calendar. Reconnect to keep your availability up to date." Conflict: a pending request on a date that is then booked elsewhere shows a warning. Offline: edits queued locally with a warning. Past dates are read-only.