Real-time voice chat application with room-based communication using 6-digit codes
DoingFlow Call is a modern, web-based voice chat application that allows users to create or join voice chat rooms using simple 6-digit codes. Built with Node.js, WebRTC, and Socket.IO for high-quality, real-time audio communication.
- π― Simple Room System: Create or join rooms with 6-digit codes
- π€ High-Quality Audio: WebRTC with noise suppression, echo cancellation
- π Universal Access: Works with any network, ngrok, Cloudflare tunnels
- π± Responsive Design: Mobile and desktop friendly
- π Mute Controls: Easy mute/unmute functionality
- π₯ Live User List: See who's connected in real-time
- π No Registration: Just enter your name and start talking
- π Private Rooms: Each room is isolated with unique codes
- Node.js (v16 or higher)
- npm or yarn
- Clone the repository
git clone https://github.com/khaliduzzamantanoy/doingflowcall.git
cd doingflowcall- Install dependencies
npm install- Start the server
npm start- Open your browser
http://localhost:3000
npm run dev# Install ngrok globally
npm install -g ngrok
# Start your server
npm start
# In another terminal
ngrok http 3000# Install cloudflared
# Then run:
cloudflared tunnel --url http://localhost:3000- Enter your name
- Click "Create Room"
- Share the 6-digit code with others
- Start talking when others join
- Enter your name
- Enter the 6-digit room code
- Click "Join Room"
- You'll be connected automatically
- Mute/Unmute: Click the microphone button
- See Participants: View live user list with status indicators
- Leave: Click the "Leave" button to exit
- Backend: Node.js, Express.js, Socket.IO
- Frontend: Vanilla JavaScript, HTML5, CSS3
- Communication: WebRTC for peer-to-peer audio
- Real-time: Socket.IO for signaling
- Sample Rate: 48kHz for high-fidelity audio
- Echo Cancellation: Eliminates audio feedback
- Noise Suppression: Filters background noise
- Auto Gain Control: Normalizes volume levels
- STUN Servers: For NAT traversal and connectivity
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Client A β β DoingFlow β β Client B β
β β β Call Server β β β
β βββββΊβ βββββΊβ β
β WebRTC P2P β β Socket.IO β β WebRTC P2P β
β Audio Stream β β Signaling β β Audio Stream β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
doingflowcall/
βββ server.js # Node.js server with Socket.IO
βββ public/
β βββ index.html # Client-side application
βββ package.json # Dependencies and scripts
βββ README.md # This file
βββ LICENSE # MIT License
# Login to Heroku
heroku login
# Create app
heroku create your-app-name
# Deploy
git push heroku main# Install Railway CLI
npm install -g @railway/cli
# Login and deploy
railway login
railway deploy# Install Vercel CLI
npm install -g vercel
# Deploy
vercelContributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
MD KHALIDUZZAMAN TANOY
- GitHub: @khaliduzzamantanoy
- WebRTC for real-time communication
- Socket.IO for seamless signaling
- Google STUN servers for connectivity
If you have any questions or need help, please open an issue in the GitHub repository.
Made with β€οΈ by MD KHALIDUZZAMAN TANOY