Skip to content

khaliduzzamantanoy/doingflowcall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

15 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DoingFlow Call πŸ“ž

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.

✨ Features

  • 🎯 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

πŸš€ Quick Start

Prerequisites

  • Node.js (v16 or higher)
  • npm or yarn

Installation

  1. Clone the repository
git clone https://github.com/khaliduzzamantanoy/doingflowcall.git
cd doingflowcall
  1. Install dependencies
npm install
  1. Start the server
npm start
  1. Open your browser
http://localhost:3000

Development Mode

npm run dev

🌐 External Access

Using ngrok

# Install ngrok globally
npm install -g ngrok

# Start your server
npm start

# In another terminal
ngrok http 3000

Using Cloudflare Tunnel

# Install cloudflared
# Then run:
cloudflared tunnel --url http://localhost:3000

πŸ“– How to Use

Creating a Room

  1. Enter your name
  2. Click "Create Room"
  3. Share the 6-digit code with others
  4. Start talking when others join

Joining a Room

  1. Enter your name
  2. Enter the 6-digit room code
  3. Click "Join Room"
  4. You'll be connected automatically

During the Call

  • Mute/Unmute: Click the microphone button
  • See Participants: View live user list with status indicators
  • Leave: Click the "Leave" button to exit

πŸ”§ Technical Details

Built With

  • 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

Audio Quality Features

  • 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

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚     Client A    β”‚    β”‚   DoingFlow     β”‚    β”‚     Client B    β”‚
β”‚                 β”‚    β”‚   Call Server   β”‚    β”‚                 β”‚
β”‚                 │◄──►│                 │◄──►│                 β”‚
β”‚   WebRTC P2P    β”‚    β”‚  Socket.IO      β”‚    β”‚   WebRTC P2P    β”‚
β”‚   Audio Stream  β”‚    β”‚  Signaling      β”‚    β”‚   Audio Stream  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“ Project Structure

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

πŸš€ Deployment

Heroku

# Login to Heroku
heroku login

# Create app
heroku create your-app-name

# Deploy
git push heroku main

Railway

# Install Railway CLI
npm install -g @railway/cli

# Login and deploy
railway login
railway deploy

Vercel

# Install Vercel CLI
npm install -g vercel

# Deploy
vercel

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘¨β€πŸ’» Author

MD KHALIDUZZAMAN TANOY

πŸ™ Acknowledgments

  • WebRTC for real-time communication
  • Socket.IO for seamless signaling
  • Google STUN servers for connectivity

πŸ“ž Support

If you have any questions or need help, please open an issue in the GitHub repository.


Made with ❀️ by MD KHALIDUZZAMAN TANOY

About

Web Based Call Service

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors