A real-time peer-to-peer file transfer and video chat application built with Spring Boot backend and WebRTC technology.
- π P2P File Transfer: Direct browser-to-browser file sharing without server storage
- πΉ Video Chat: Real-time video and audio communication
- π¬ Real-time Chat: Instant messaging within rooms
- π Password-Protected Rooms: Secure your rooms with optional passwords
- π₯ Multi-user Support: Share files with multiple users simultaneously
- π― No Size Limits: Transfer files of any size directly between browsers
- π Auto-reconnect: Automatic WebSocket reconnection on connection loss
- Java 21 - Latest LTS version of Java
- WebRTC - Peer-to-peer communication
- Spring Boot 3.2.0 - Framework for building the application
- Real-time Communication: Netty Socket.io server
- Java 21 or higher
- Maven 3.6 or higher
- Modern web browser with WebRTC support (Chrome, Firefox, Edge, Safari)
- Enter Username: Choose a display name
- Room ID: Enter existing room ID or leave blank to create new room
- Password (optional): Set/enter room password for security
- Join: Click to enter the room
- Select Recipients: Choose users to send files to
- Add Files: Click "Select Files" or drag & drop
- Send: Files transfer directly between browsers
- Start Call: Click the video icon in the room
- Allow Permissions: Grant camera/microphone access
- End Call: Click the red hang-up button
- Switch to Chat Tab: Click the chat icon
- Type Message: Enter your message
- Send: Press Enter or click send
- Chrome 90+
- Firefox 88+
- Safari 14.1+
- Edge 90+
- Ensure firewall allows WebSocket connections on port 3001
- Check browser console for WebSocket connection errors
- Verify CORS configuration matches your domain
- Ensure HTTPS in production (required for camera/microphone access)
- Configure STUN/TURN servers for NAT traversal
- Check browser permissions for camera/microphone
- Large files may take time depending on connection speed
- Browser may limit maximum file size (usually 2GB)
- Ensure stable internet connection for large transfers
- Fork the repository
- 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.
- Spring Boot team for the excellent framework
- WebRTC community for peer-to-peer technology
For issues, questions, or suggestions, please open an issue on GitHub.