- Next.js 16 App Router site with the ANOUMA design system - Payload CMS (PostgreSQL) for offers, events, posts and page content - WebRTC video-call system with custom signaling server - SMTP email reminders and booking-request notifications - Customer accounts, calendar-based availability, and booking workflow
23 lines
928 B
TypeScript
23 lines
928 B
TypeScript
import type { MeetingRole } from "./token";
|
|
|
|
export type ParticipantSummary = {
|
|
participantId: string;
|
|
name: string;
|
|
role: MeetingRole;
|
|
};
|
|
|
|
export type ClientToServerMessage =
|
|
| { type: "offer"; to: string; payload: RTCSessionDescriptionInit }
|
|
| { type: "answer"; to: string; payload: RTCSessionDescriptionInit }
|
|
| { type: "ice-candidate"; to: string; payload: RTCIceCandidateInit }
|
|
| { type: "kick"; targetParticipantId: string };
|
|
|
|
export type ServerToClientMessage =
|
|
| { type: "welcome"; participantId: string; role: MeetingRole; participants: ParticipantSummary[] }
|
|
| ({ type: "peer-joined" } & ParticipantSummary)
|
|
| { type: "peer-left"; participantId: string }
|
|
| { type: "offer"; from: string; payload: RTCSessionDescriptionInit }
|
|
| { type: "answer"; from: string; payload: RTCSessionDescriptionInit }
|
|
| { type: "ice-candidate"; from: string; payload: RTCIceCandidateInit }
|
|
| { type: "kicked" };
|