Availability, buffers and reminders per appointment type — public booking page enabled
Mon 11
2 booked
09:00ImranBody compositionIn person
18:00KavyaTrial session
Tue 12
2 booked
09:00VarunBody compositionIn person
18:00RiyaBody composition
Wed 13
4 booked
07:00RishiTrial session
08:00AdityaPT session
17:00PoojaPT sessionIn person
19:00ZoyaBody compositionIn person
Thu 14
4 booked
07:00KavyaPT sessionIn person
08:00KavyaPT session
17:00ImranPT session
19:00LakshmiPT sessionIn person
Fri 15
2 booked
07:00DevikaBody composition
08:00RohanBody composition
Sat 16
4 booked
07:00TrishaTrial sessionIn person
08:00AishaBody compositionIn person
17:00AaravBody composition
18:00YashPT session
Mon 11
Tue 12
Wed 13
Thu 14
Fri 15
Sat 16
07:00
Rishi · Trial session
Kavya · PT session
Devika · Body composition
Trisha · Trial session
08:00
Aditya · PT session
Kavya · PT session
Rohan · Body composition
Aisha · Body composition
09:00
Imran · Body composition
Varun · Body composition
17:00
Pooja · PT session
Imran · PT session
Aarav · Body composition
18:00
Kavya · Trial session
Riya · Body composition
Yash · PT session
19:00
Zoya · Body composition
Lakshmi · PT session
Online — meeting link auto-createdIn personDefault for new bookings: Google Meet
⌁Synced events dedupe on (ical_uid, original_start_time) — never the provider event id, or one moved instance of a recurring series overwrites the whole series.
⌁Two providers, one interface. Zoom and Google Meet both implement create(appointment) → {join_url, provider_ref}; the appointment stores the result and the booking flow never learns which one produced it — which is why the mixed rows above render from the same component. Teams would be a third file, not a third code path. No credential means online trials & sessions simply book without a link.