Scheduling Appointments
One-on-one sessions, group classes and online sessions on one calendar.
What this is
/schedule is your master calendar. Two views:
- Calendar — month grid (default).
- Timed Grid — week or day timeline with time slots.
- Open Schedule to see your calendar.
- Click New Appointment in the header.
- Give the session a Title.
- Choose the Client, then check the date and time.
- Click Create Appointment and it lands on your calendar.
- Open Timed Grid to see the new session in its time slot.
Each appointment block is color-coded by status: scheduled / confirmed / completed / cancelled / no_show.
Creating a one-on-one appointment
- Open
/schedule. - Click New Appointment in the header.
- The CreateAppointmentModal opens. Fill in:
- Title (e.g. "Lower body session — Sarah")
- Client — pick from your active roster.
- Type — 1-on-1 / Group Class / Assessment / Consultation / Online Session.
- Date, Start time, End time.
- Location (optional — gym name, address).
- Online session checkbox + Meeting Link (Zoom, Google Meet) if virtual.
- Notes (visible to client).
- Click Create Appointment. The block appears on the calendar.
The client sees this on their own /schedule view immediately.
Group classes and repeating sessions
Set Type = Group Class to label a session as a class. The form has no class-size or self-booking fields yet, and there is no repeat option: create each session separately (the same title keeps them easy to spot on the calendar).
Status changes
Click an appointment block to open the detail modal. Status buttons:
- Confirm — flips status from scheduled → confirmed.
- Complete — marks as completed (you ran the session).
- No Show — client missed.
- Cancel Appointment — cancels with optional reason.
Reschedule via the RescheduleButton — opens a small dialog to pick a new start/end without losing the appointment metadata.
Setting your weekly availability
If clients self-book, they need to know when you're available.
- Click Availability Settings in the header.
- Land at
/schedule/availability. - For each day Mon-Sun, add time slots (start, end, optional location). Or use the quick toggle bar at the top — click a day button to add a default 9-5 slot or remove all slots.
- Save Changes.
Common pitfalls
Where to find this
- Page:
/scheduleand/schedule/availability. - Components:
CreateAppointmentModal,RescheduleButton,GroupClassForm,RecurrenceConfig,CalendarView. - API:
POST /api/schedule/appointments,PUT /api/schedule/appointments/[id],POST /api/schedule/availability.
