Skip to content

CodeForContribute/scream

Repository files navigation

Scream

A world-class, privacy-first video calling app built to rival Zoom and Google Meet. Features ultra-low latency WebRTC calls, AI-powered transcription and translation, end-to-end encryption, and a beautiful modern UI.

Features

Core Video Calling

  • HD Video & Audio — WebRTC-powered via LiveKit SFU for low-latency group calls
  • Screen Sharing — Share your screen with one click
  • Gallery & Speaker Views — Adaptive grid layout that switches between gallery and active-speaker modes
  • In-Call Chat — Real-time text messaging via LiveKit data channels
  • Pre-Join Lobby — Camera/mic preview with device selection before joining

AI & Smart Features

  • Live Captions — Real-time speech-to-text transcription displayed as live captions
  • Meeting Summaries — Post-call AI-generated summaries with action items (via Claude API)
  • Live Translation — Real-time subtitle translation powered by LibreTranslate (self-hosted)
  • Noise Cancellation — Client-side noise suppression using Web Audio API processors

Advanced

  • End-to-End Encryption — LiveKit E2EE with Insertable Streams API; the SFU never sees plaintext media
  • Virtual Backgrounds — Background blur and color gradient replacement via canvas processing
  • Spatial Audio — Positional audio using Web Audio API for immersive large calls
  • Interactive Whiteboard — Collaborative drawing canvas with pen, shapes, text, and colors
  • Breakout Rooms — Split participants into timed sub-rooms with automatic recall
  • Recording — Server-side room recording via LiveKit Egress API
  • Emoji Reactions — Floating emoji reactions visible to all participants

UI & Polish

  • Dark / Light / System Theme — Toggle between themes with automatic system preference detection
  • Smooth Animations — Framer Motion transitions for pages, chat, captions, and popups
  • Keyboard ShortcutsM mute, V camera, S share, C chat, T captions, E react, L leave

Tech Stack

Layer Technology
Frontend Vite + React 18 + TypeScript
UI Tailwind CSS + Radix UI
State Zustand (with persist middleware)
Backend Node.js + Fastify
Media Server LiveKit (self-hosted SFU)
Database PostgreSQL + Drizzle ORM
Cache Redis
Auth JWT + bcrypt
AI Transcription Web Speech API / Whisper
AI Summaries Claude API
Translation LibreTranslate (self-hosted)
Monorepo pnpm workspaces + Turborepo
Containerization Docker Compose

Project Structure

scream/
├── apps/
│   ├── web/                  # React frontend (Vite)
│   │   ├── src/
│   │   │   ├── components/   # UI components (call, chat, lobby, whiteboard, breakout, ui)
│   │   │   ├── hooks/        # Custom hooks (media, transcription, translation, E2EE, etc.)
│   │   │   ├── stores/       # Zustand stores (auth, call, chat, theme, whiteboard, breakout)
│   │   │   ├── pages/        # Route pages (Home, Auth, Room, Summary)
│   │   │   ├── services/     # API client
│   │   │   └── styles/       # Global CSS
│   │   └── package.json
│   └── server/               # Fastify backend
│       ├── src/
│       │   ├── routes/       # API routes (auth, rooms, recording, translation, breakout, AI)
│       │   ├── services/     # LiveKit, recording, translation services
│       │   ├── db/           # Drizzle schema & migrations
│       │   ├── middleware/    # JWT auth, rate limiting
│       │   └── ws/           # WebSocket handlers
│       └── package.json
├── packages/
│   └── shared/               # Shared types, constants, utils
├── infra/
│   └── livekit/              # LiveKit server config
├── docker-compose.yml        # Postgres, Redis, LiveKit, LibreTranslate
├── turbo.json
└── pnpm-workspace.yaml

Getting Started

Prerequisites

  • Node.js >= 18
  • pnpm >= 9
  • Docker & Docker Compose

Setup

# 1. Clone and install dependencies
git clone <repo-url>
cd scream
pnpm install

# 2. Copy environment variables
cp .env.example .env
# Edit .env with your values (defaults work for local dev)

# 3. Start infrastructure (Postgres, Redis, LiveKit, LibreTranslate)
docker-compose up -d

# 4. Run database migrations
source .env && pnpm --filter server db:generate
source .env && pnpm --filter server db:migrate

# 5. Start the backend
source .env && pnpm --filter server dev

# 6. Start the frontend (in another terminal)
pnpm --filter web dev

Access

Service URL
Frontend http://localhost:5173
Backend API http://localhost:3001
LiveKit ws://localhost:7880
LibreTranslate http://localhost:5000

Environment Variables

Variable Description Default
DATABASE_URL PostgreSQL connection string postgresql://scream:scream@localhost:5434/scream
REDIS_URL Redis connection string redis://localhost:6380
LIVEKIT_URL LiveKit server WebSocket URL ws://localhost:7880
LIVEKIT_API_KEY LiveKit API key devkey
LIVEKIT_API_SECRET LiveKit API secret devsecret
JWT_SECRET Secret for JWT token signing (required)
SERVER_PORT Backend server port 3001
ANTHROPIC_API_KEY Claude API key for meeting summaries (optional)
LIBRETRANSLATE_URL LibreTranslate server URL http://localhost:5000
VITE_API_URL Frontend API base URL http://localhost:3001
VITE_LIVEKIT_URL Frontend LiveKit URL ws://localhost:7880

Keyboard Shortcuts (In-Call)

Key Action
M Toggle microphone
V Toggle camera
S Toggle screen share
C Toggle chat panel
T Toggle captions
E Open emoji reactions
L Leave call

License

MIT

About

A world-class, privacy-first video calling app built to rival Zoom and Google Meet. Features ultra-low latency WebRTC calls, AI-powered transcription and translation, end-to-end encryption, and a beautiful modern UI.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages