xypd is a secure, peer-to-peer file transfer application powered by Go, WebAssembly (WASM), and WebRTC. It allows you to share files of any size directly between devices without storing them on a server.
- Peer-to-Peer: Direct transfer between clients. No data is stored on the server.
- Secure: End-to-end encryption via WebRTC.
- Unlimited File Size: Smart chunking (16KB) allows transferring large files reliably.
- Simple & Fast: No passwords required. Just share the 6-character Room ID.
- Modern UI: Drag and drop support with real-time progress tracking.
- Go Everywhere: Backend in Go, Frontend logic in Go (WASM).
- Server: Go (Gorilla WebSocket) for signaling.
- Client: Go (compiled to WASM) for WebRTC logic.
- Frontend: HTML5, CSS3, JavaScript (glue code).
- Deployment: Docker, Railway, Render.
- Prerequisites: Go 1.23+
- Run:
Access at
make run
http://localhost:8080.
This project is ready for deployment on Railway or Render.
- Push to GitHub.
- Connect repository to Railway/Render.
- The
Dockerfilehandles the multi-stage build (Go server + WASM client).
- Room ID: 6-character alphanumeric ID for easy but secure sharing.
- CSP: Strict Content Security Policy to prevent XSS.
Feel free to contribute! Open an issue or submit a pull request if you have ideas for improvements or new features.
This project is licensed under the MIT License - see the LICENSE file for details.