Skip to content

C.3: Calendar

Summary

The Client Calendar shows the client's Compath meetings, external calendar events, and pending client bookings in month, week, and day views. Selecting a Compath event opens a side panel with session details and actions.

Role

  • Primary: Client
  • Secondary: Counselor, System, External calendar provider

Entry Point

  • URL: /calendar
  • Navigation: Sidebar -> Calendar

Preconditions

  • Authenticated: yes
  • Required role: client
  • Meeting list API must be available
  • Calendar connection data is optional

Steps

  1. Client opens /calendar.
  2. System calculates the visible date range for the current month, week, or day view.
  3. System queries meetings within the visible range.
  4. Because the user is a client, system also queries the client's pending bookings.
  5. System queries calendar connections and external calendar events.
  6. Calendar renders Compath meetings, external events, and pending bookings as events.
  7. Client uses Today, previous, next, month, week, or day controls to change the view.
  8. Client selects a Compath meeting event.
  9. System opens the session side panel with title, status, time, duration, recurrence, and description.
  10. Client can join an eligible scheduled/in-progress call, cancel a scheduled session, or open full details at /sessions/:meetingId.
  11. Client selects an external event to view read-only external event details and any attached meeting link.

Diagram

Edge Cases

  • No calendar connection: Calendar shows a connection prompt when no active connection exists.
  • No visible events: Calendar still renders the selected empty date range.
  • External event: External events are read-only; the user can open any external meeting link if present.
  • Frontend create affordance: The current calendar toolbar and slot selection can open new-session UI. For clients, whether creation is allowed depends on backend authorization; the intended client flow is viewing and joining own sessions/bookings.
  • Cancel action: The panel shows a cancel action for scheduled meetings. Backend ownership/role rules determine whether a client can cancel that meeting.

Screenshot Status

  • Captured: calendar.png