A web-based anonymous voice chat platform that connects random strangers in real-time voice conversations. Built with Next.js, TypeScript, FastAPI, and WebRTC.
- π€ Real-time Voice Chat: Peer-to-peer audio communication using WebRTC
- π Random Matching: Connect with random strangers instantly
- π Anonymous: No sign-up or authentication required
- βοΈ Skip Functionality: Move to the next person anytime
- π Mute/Unmute: Control your microphone during calls
- π¨ Beautiful UI: Dark green theme inspired by modern design
- β‘ Low Latency: Direct peer-to-peer connections
- π Privacy Focused: No data storage or user tracking
- Next.js 16 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS 4 - Utility-first styling
- WebRTC API - Peer-to-peer audio communication
- WebSocket - Real-time signaling
- Lucide React - Icon library
- FastAPI - Modern Python web framework
- WebSockets - Real-time bidirectional communication
- Uvicorn - ASGI server
- In-memory state - No database required
βββββββββββββββ WebSocket βββββββββββββββ
β Client A ββββββββΊ Signaling Server βββββββΊβ Client B β
βββββββββββββββ βββββββββββββββ
β β
β WebRTC Peer-to-Peer β
ββββββββββββββββΊ Audio Stream ββββββββββββββββ
-
Signaling Server (FastAPI)
- Manages WebSocket connections
- Handles user matching queue
- Routes WebRTC signaling messages (SDP, ICE candidates)
- Manages session state
-
Frontend Client (Next.js)
- Handles user interface
- Manages WebRTC peer connections
- Captures and streams audio
- Processes incoming audio
-
WebRTC
- Peer-to-peer audio transmission
- NAT traversal using STUN servers
- Low-latency communication
- Node.js 18+ and npm/pnpm
- Python 3.8+ and pip
- Modern browser with WebRTC support
- Navigate to the backend folder:
cd "Call me Backend"- Install Python dependencies:
pip install -r requirements.txt- Start the FastAPI server:
python main.pyThe backend will run on http://localhost:8000
- Navigate to the frontend folder:
cd call_me- Install dependencies:
npm install
# or
pnpm install- Start the development server:
npm run dev
# or
pnpm devThe frontend will run on http://localhost:3000
- Open
http://localhost:3000in two different browser windows (or use incognito mode) - Click "Start Call" in both windows
- Grant microphone permissions when prompted
- Both users will be matched and connected automatically
- Start talking!
- Click the "Start Call" button
- Grant microphone access when prompted
- Wait for the system to find a partner
- Once matched, you'll be connected automatically
- Mute/Unmute: Toggle your microphone on/off
- Skip: Move to a new random partner
- End Call: Terminate the current session
- Disconnected: Not in a call, ready to connect
- Waiting: Searching for a partner
- Connecting: Establishing connection with partner
- Connected: Active voice chat in progress
Call me Backend/
βββ main.py # FastAPI application and WebSocket handlers
βββ requirements.txt # Python dependencies
βββ README.md # Backend documentation
call_me/
βββ app/
β βββ page.tsx # Main application component
β βββ layout.tsx # Root layout
β βββ globals.css # Global styles
βββ package.json # Node dependencies
βββ tsconfig.json # TypeScript configuration
find_match: Request to find a random partnerskip: Skip current partneroffer: WebRTC SDP offeranswer: WebRTC SDP answerice_candidate: ICE candidate for NAT traversal
connected: Connection establishedwaiting: Added to waiting queuematch_found: Partner found (includes initiator flag)partner_disconnected: Partner left the calloffer/answer/ice_candidate: Forwarded signaling messages
This project demonstrates several key concepts:
- Concurrent Connections: Multiple users connected simultaneously
- Distributed Nodes: Each client acts as an independent node
- Real-time Coordination: Central server coordinates peer matching
- Peer-to-Peer Communication: Direct audio streams between clients
- Event-driven Architecture: WebSocket-based messaging
- Stateful Session Management: Tracking active connections and matches
- User authentication (optional)
- Chat history and statistics
- Language/region-based matching
- Interest-based matching
- Video chat support
- Text chat alongside voice
- Report and moderation system
- Mobile app (React Native)
- TURN server for better NAT traversal
- End-to-end encryption
- Quality of service metrics
- No Account Required: Fully anonymous usage
- Temporary Sessions: All data cleared on disconnect
- No Storage: Conversations are not recorded
- Client-side Audio: Audio streams never touch the server
- Session IDs: Random, non-identifying user IDs
- Chrome/Edge 90+
- Firefox 88+
- Safari 15+
- Opera 76+
- Check browser permissions
- Ensure HTTPS or localhost
- Try a different browser
- Check if backend is running
- Verify WebSocket connection in browser console
- Check firewall settings
- Check internet connection
- Close bandwidth-heavy applications
- Try using headphones
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is for educational purposes demonstrating parallel and distributed computing concepts.
- Inspired by OmeTV and similar random chat platforms
- Built with modern web technologies
- Design inspired by minimalist science-themed interfaces
For issues, questions, or suggestions, please open an issue in the repository.
Note: This is an educational project. Use responsibly and respectfully.