{children}
; 29 | } 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # p2p.chat 2 | 3 | > [!IMPORTANT] 4 | > Archived due to not being actively maintained. I do not currently have the bandwidth to work on this. 5 | 6 | p2p.chat is a peer-to-peer video conferencing application. Think of it as an free and open source Zoom alternative. 7 | 8 | ## Architecture 9 | 10 | p2p.chat uses WebRTC to power all video and data communication between peers. Peers communicate directly in a mesh architecture, with the only server interaction being using the [signalling server](./signalling) to allow peers to discover each other. All data sent over WebRTC is end-to-end encrypted. 11 | 12 | ## Packages: 13 | 14 | - [@p2p.chat/www](./www): The web app. 15 | - [@p2p.chat/signalling](./signalling): The signalling server that powers peer discovery. 16 | -------------------------------------------------------------------------------- /www/components/room/video.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import classNames from "classnames"; 3 | 4 | interface Props { 5 | local?: boolean; 6 | stream: MediaStream; 7 | videoDisabled?: boolean; 8 | } 9 | 10 | export default function Video(props: Props) { 11 | const { local = false, stream, videoDisabled = false } = props; 12 | 13 | const className = classNames("h-full w-full object-cover rounded-md", { 14 | "scale-x-[-1]": local, 15 | hidden: videoDisabled, 16 | }); 17 | 18 | return ( 19 |