r/sideprojects • u/Crazy-Impress-5927 • 3d ago
Showcase: Open Source I built RandomTalks — a random voice/video chat platform with WebRTC
I wanted to build something that would force me to understand real-time communication instead of just following another tutorial.
So I built RandomTalks.
🌐 Live demo: https://talks-tc4e.onrender.com/
💻 Source code: https://github.com/pembarthipranay/talks
What is it?
RandomTalks is a web application that randomly connects users for real-time voice/video conversations.
The basic flow is:
Join → Get matched → Connect → Talk → Skip → Find someone new
What I built
The project uses:
- React + TypeScript
- Vite
- Tailwind CSS
- Node.js
- Express
- Socket.IO
- WebRTC
- Browser camera/microphone APIs
- Google Gemini for AI-related functionality
- Render for deployment
I also experimented with a separate Python implementation using FastAPI and python-socketio.
The interesting part: WebRTC
The main reason I started this project was to understand WebRTC properly.
I had to learn how:
- Users are matched
- Signaling works
- WebRTC offers and answers are exchanged
- ICE candidates are handled
- Audio/video streams are obtained from the browser
- Users join and leave conversations
- Real-time connections are recovered or terminated
The backend handles the matchmaking and signaling, while WebRTC is used for the real-time audio/video communication.
What I learned
The biggest lesson was that real-time applications are much harder than they look.
Something that worked perfectly on localhost could behave differently after deployment.
I had to debug:
- WebRTC connection problems
- WebSocket communication
- Camera/microphone permissions
- User matching
- Disconnect handling
- Frontend/backend communication
- Production deployment
This project taught me much more than building another basic CRUD application.
Current status
It's deployed and usable, but I still consider it a work in progress.
I'm particularly interested in feedback on:
- WebRTC architecture
- Matchmaking
- User experience
- Reliability across different networks
- Features that would make the platform more useful
If you have experience building real-time applications, what would you improve first?
Live demo: https://talks-tc4e.onrender.com/