Perspective is a WebRTC-based Peer-to-Peer real-time screen and camera sharing web application that enables direct media stream sharing between clients.
By utilizing a static client design, it ensures seamless connectivity across any hosting environment as long as standardized signaling protocols are met. This architecture maximizes technical neutrality and connection autonomy by minimizing server intervention, facilitating a purely direct exchange between users.
- Clone the repository
git clone https://github.com/BackGwa/Perspective.git
cd Perspective- Install dependencies
cd app
npm installCopy the .env.example file to .env in the app directory and configure the required values.
cp .env.example .envEnvironment Variables
# PeerJS Server Configuration
VITE_PEERJS_HOST=
VITE_PEERJS_PORT=
VITE_PEERJS_PATH=
VITE_PEERJS_SECURE=true
VITE_STUN_SERVER_URL=
# Session Settings
VITE_MAX_PARTICIPANTS=128
VITE_MAX_PASSWORD_RETRIES=3
# Media Quality Settings
VITE_MAX_RESOLUTION_WIDTH=1920
VITE_MAX_RESOLUTION_HEIGHT=1080
VITE_MAX_FRAMERATE=30
# SEO Settings
VITE_APP_DOMAIN=https://yourdomain.com/Note If PeerJS server settings are left empty, the PeerJS public server will be used. For production environments, it is recommended to run your own PeerJS server.
npm run build
npm run previewBuilt files will be generated in the app/dist directory.
Perspective uses a fully P2P architecture. It transmits media streams directly between host and participants through WebRTC, with the PeerJS server used only for signaling purposes. Media data never passes through the server, ensuring privacy.
It supports password authentication and session control through data connections, as well as NAT traversal via STUN servers.
For detailed architecture information, see ARCHITECTURE.md.
Thank you for contributing to Perspective! For contribution guidelines, branch naming conventions, and PR guidelines, please refer to CONTRIBUTING.md.
This project is distributed under the MIT License. See the LICENSE file for more details.
