Skip to content

G.10: Join Meeting

Summary

Guests join a video meeting from a public share token. They can join as a guest with their display name or, if already authenticated, join using their account.

Role

  • Primary: Guest
  • Secondary: Client, Counselor

Entry Point

  • URL: /join/:token

Preconditions

  • Meeting token is valid.
  • Meeting is joinable and not cancelled or ended.

Steps

  1. Guest opens /join/:token.
  2. Frontend loads guest meeting information.
  3. Guest chooses account join or guest join.
  4. Guest enters their display name.
  5. Guest completes the pre-join device check.
  6. If the meeting is still scheduled, the frontend shows a waiting lobby and polls meeting status.
  7. When the meeting becomes in_progress, the frontend requests LiveKit credentials through the join API.
  8. Meeting room connects with the returned token and URL.
  9. Guest leaves or disconnects from the room.

Diagram

Edge Cases

  • Not found: Invalid token shows not-found state.
  • Not started: Scheduled meetings show a frontend waiting lobby after device check until the host starts.
  • Ended/cancelled: Page shows ended or cancelled state with terminal-state copy.
  • Connection failure: User can retry from the error state.

Current Implementation Notes

  • Frontend: frontend/src/app/pages/join-meeting.tsx, frontend/src/features/meeting/components/meeting-pre-join.tsx

Screenshot Status

  • Join page states captured with Playwright on 2026-04-18 using mocked meeting data:
    • Guest details form: guest-form.png
    • Guest pre-join: pre-join.png
    • Waiting lobby: waiting-lobby.png
    • Cancelled meeting: cancelled.png
    • Ended meeting: ended.png
  • Meeting room fixture:
    • Guest room waiting state: meeting-room-guest-waiting.png