MiroTalk P2P is a self-hosted, open-source WebRTC video conferencing application that enables real-time peer-to-peer video calls, audio calls, screen sharing, chat, whiteboard collaboration, file sharing, and recording. The architecture consists of a Node.js/Express server with Socket.IO for signaling and a REST API (v1) for programmatic meeting management, token generation, and statistics. The client is a single-page application with modular JavaScript files handling UI components, media processing, accessibility, and integrations. Key features include end-to-end encrypted media (SRTP/DTLS), noise suppression via RNNoise AudioWorklet, live captions (Web Speech API and server-side Whisper transcription), ChatGPT integration, OIDC authentication, JWT-based API security, and an embeddable support widget. The system is designed for privacy: no persistent storage of signaling data, chat, or media; recordings stay in the browser as Blobs. Deployment options include Docker, Kubernetes, and bare-metal, with support for CoTURN TURN servers, ngrok tunneling, and email alerts via Nodemailer. The codebase is well-structured with separate modules for security (XSS sanitization, input validation, host protection), logging, and integration helpers, though the main server.js is monolithic (~2000 lines) and the client-side CSS is large (~5000 lines combined).
This repository is a collection of sample applications demonstrating features of the OpenTok.js (Vonage Video API) SDK. It contains 14 standalone sub-projects, each focusing on a specific capability: basic video chat, archiving, signaling, background blur, audio/video transformers, canvas publishing, device selection, stereo audio, stream filters, and end-to-end encryption. The samples are implemented in vanilla JavaScript with HTML/CSS, and a Node.js server for the encryption demo. The code is well-structured and serves as reference implementations for developers integrating Vonage video into web applications. The most technically interesting components involve media processing with Web Workers, Canvas pixel manipulation, and the Web Audio API for stereo streaming.
This repository implements a minimal two-person video chat application using WebRTC, with a Node.js signaling server based on Express and Socket.IO, and a client-side peer connection via the simple-peer library. The server tracks up to two connected clients and relays WebRTC offers and answers. The client captures local video/audio via getUserMedia, establishes a peer connection, and displays the remote video. Additional features include CSS filter effects (e.g., grayscale, sepia) that are synchronized between peers over the data channel, a dark theme toggle, and click-to-mute/unmute on the remote video. The code is straightforward but lacks error handling, tests, and scalability (single global room, no reconnection logic). It serves as a functional demo or starting point for WebRTC experimentation, but is not production-ready.