Skip to content

Repository files navigation

DuoCall

A WhatsApp-inspired, browser-based video calling app designed exclusively for two people. Built with WebRTC for peer-to-peer video/audio and Socket.IO for signaling and chat.

Features

  • Pair with a shared number: both users enter the same 4–10 digit number and press Connect
  • HD peer-to-peer video & audio (WebRTC, Google STUN)
  • Camera / microphone toggles, camera switch (front/back), mirror preview, fullscreen
  • Desktop screen share
  • Built-in chat: live messages, emoji picker, typing indicator, read receipts / seen status, timestamps, image sharing, copy & delete own messages
  • Desktop: right slide-in chat panel · Mobile: bottom-sheet chat with swipe-down close
  • Settings: dark/light theme, camera/mic/speaker selection, resolution, ping / bitrate / network quality
  • Sounds (WebAudio) + mobile vibration, call timer, auto-reconnect with ICE restart
  • Secret entrance: /start opens the app; / alone redirects to YouTube

Tech

  • Client: React · TypeScript · Vite · TailwindCSS · Framer Motion · Lucide React · Zustand
  • Server: Node.js · Express · Socket.IO

Getting started

npm install
npm run dev

Open http://localhost:5173/start in two browsers/devices, enter the same number on both, and press Connect.

Scripts

Command Description
npm run dev Run server + client concurrently
npm run build Type-check & build both packages
npm run typecheck Strict TS type-check on both

Deployment

  • Single service: server serves the built client (see Dockerfile, render.yaml)
  • Server runs Express + Socket.IO; set CLIENT_ORIGIN for CORS

Pairing protocol

  • connect-request { code }connection-status (waiting | paired { peerId } | busy | invalid-code)
  • First connecter waits; a second connecter with the same number gets paired with them
  • Signaling: offer, answer, ice-candidate relayed between the two peers
  • Chat: send-message, typing, stop-typing, read-receipt, delete-message relayed
  • Track state: track-state (camera/mic on/off badges for the peer)
  • leave-connection / disconnect → user-left

About

Internet video call with chat for lovers

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages