Skip to content

PeerCall is a hypothetical modern, secure, real-time video chat application built with web technologies.

OPCODE-Open-Spring-Fest/PeerCall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PeerCall β€” Modern, Secure Real-Time Video Chat πŸŽ₯πŸ”’

Project Status: Active
License: MIT
GitHub Issues
GitHub Pull Requests
Contributions Welcome

A community-driven, secure, real-time video chat app built with web technologies.


Table of Contents


Project Overview

PeerCall delivers secure, privacy-respecting, real-time video communication combining peer-to-peer WebRTC with solid authentication and session management.

Watch PeerCall in action:

WebRTC Video Call Demo
A smooth real-time WebRTC video call experience.

Screen Sharing Demo
Seamless screen sharing capability.


Vision and Design Principles

  • πŸš€ Easy onboarding: Clone, run, and start developing quickly.
  • 🀝 Community-first: Open governance and transparent development.
  • πŸ”’ Security: Token rotation, secure sessions, HTTP-only cookies.
  • ⚑ Performance: Responsive, efficient, modern browser compatibility.

Goals & Non-Goals

Goals Non-Goals
Secure, user-friendly video chat platform Enterprise-level scaling out-of-the-box
Clear and welcoming contribution process Polished final UI/UX design
Strong CI/CD pipelines and reproducible builds Complex SFU cluster deployments initially

Key Features

  • πŸ” Secure sign-up/sign-in with refresh token rotation
  • πŸ”— Create/join rooms using short shareable links
  • πŸŽ₯ WebRTC peer-to-peer media (audio/video) with mute & toggle controls
  • πŸ’¬ In-call chat overlay for messaging during video calls
  • πŸ“± Device & session listing with revocation for security
  • πŸ”„ Lightweight backend for authentication, signaling, and presence

Tech Stack

Frontend

Backend

  • Node.js + TypeScript
  • Express or NestJS
  • MongoDB or PostgreSQL
  • JWT + httpOnly cookie session management

Real-Time

  • WebRTC for media streams
  • socket.io or WebSocket for signaling & presence

Tooling

  • ESLint, Prettier for code quality
  • Jest or Vitest for unit testing
  • GitHub Actions for CI/CD

Architecture Overview


graph TD
Client[Client (Browser)]
Server[API \& Signaling Server]
Database[Database]

Client -->|Requests Access Token| Server
Client -->|WebRTC Signaling \& Media| Server
Server -->|Stores Sessions \& Tokens| Database

Architecture components of PeerCall showing how client, signaling server, and database interact.


Folder Structure


/
β”œβ”€ README.md
β”œβ”€ LICENSE
β”œβ”€ .github/
β”œβ”€ frontend/
β”‚  β”œβ”€ src/
β”‚  β”œβ”€ public/
β”‚  └─ package.json
β”œβ”€ server/
β”‚  β”œβ”€ src/
β”‚  └─ package.json
β”œβ”€ scripts/
└─ tests/


Getting Started

Prerequisites

  • Node.js >= 18
  • npm >= 9 or Yarn

Clone and install


git clone https://github.com/OPCODE-Open-Spring-Fest/PeerCall.git
cd PeerCall
cd frontend
npm install
cd ../server
npm install

Setup environment variables

  • Copy .env.example to .env in both frontend and server folders and fill in the required values.

Run local servers



# Run backend API server

cd server \&\& npm run dev

# Run frontend dev server (open new terminal)

cd ../frontend \&\& npm run dev

Open http://localhost:5173 to view the app.


Testing & Quality Gates

  • βœ… Type-check: npm run type-check
  • βœ… Linting: npm run lint (npm run lint:fix to fix issues)
  • βœ… Unit Tests: npm run test
  • βœ… Build verification: npm run build
  • βœ… Continuous Integration with GitHub Actions on all PRs and main branch.

Contributing

Please read our Contribution Guide for detailed instructions. Quick start:

  1. Pick an issue labelled good first issue or help wanted and add proper descritpion of your apporach and how you want to contribute.
  2. Fork and create a feature branch: git checkout -b feat/awesome-feature
  3. Commit often with clear, conventional commit messages.
  4. Run tests and linting locally before PR.
  5. Open a PR referencing relevant issues and describe your changes.
  6. Engage in code review until PR is approved and merged.

Issue & Release Process

  • Use descriptive labels like type: bug, area: frontend, help wanted etc.
  • File issues using templates for reproducibility.
  • Releases follow semantic versioning. Changelog auto-generated.

Branching & Git Workflow

  • Feature branches use prefixes like feat/, fix/, chore/, and docs/.
  • PRs should be concise and pass all CI checks.
  • Rebase to keep history clean before merging.

PR Template & Review Checklist



## Summary

## Related Issues

## How to Test

- [x] CI passes
- [x] Code style \& tests updated


Code Style Guide

  • Strict TypeScript typing – use readonly and unknown when appropriate
  • ESLint and Prettier enforced for consistency
  • Modular, testable, focused components and functions
  • Clear API typings on exports and interfaces

Security & Licensing

  • Responsible Disclosure guidelines in SECURITY.md
  • Contributor Code of Conduct in CODE_OF_CONDUCT.md
  • Licensed under MIT (see the LICENSE file)

Roadmap

  • v0.1: MVP - authentication + basic peer-to-peer WebRTC calls
  • v0.2: Session management, chat overlay, UI improvements, e2e tests
  • v1.0: Accessibility audit, stability enhancements, optional SFU integration

Project Governance

Community-driven with maintainer oversight. Contributions, discussions, and feedback are welcomed to shape project direction.Please star the repo

Maintainers & Contact


Acknowledgements

Thanks to all PeerCall contributors, WebRTC community (webrtc.org), and open-source projects making this possible.

About

PeerCall is a hypothetical modern, secure, real-time video chat application built with web technologies.

Topics

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published