Skip to content

arshsaxena/PeerRoom

Repository files navigation

PeerRoom logo  PeerRoom

Instant, private file sharing and real-time collaborative workspaces, right in your browser.

PeerRoom provides private, cross-platform file transfers and temporary collaborative workspaces with no registration, no ads, and no user tracing.

Next.js TailwindCSS WebRTC Cloudflare

🤔 Why PeerRoom?

Sharing files with a nearby device should be simple. It should not require uploading files to the cloud, sending emails to yourself, or pairing devices over Bluetooth.

PeerRoom is built to be the easiest, fastest, and most private way to share files and collaborate across devices:

Feature PeerRoom Traditional Cloud AirDrop
Setup Zero. Just open the web page Requires account creation & login Requires Apple hardware
File Limits Up to 2GB for P2P transfers Limited free tiers, prompts to upgrade Unlimited (Apple-only)
Privacy 100% Private. Files never touch any cloud server Files are stored on corporate servers Local network only
Cross-Platform Works on Android, iOS, Windows, macOS, Linux Yes (requires logins & apps) No (Apple ecosystem lock-in)

✨ Highlights

Feature What it does
📡 Direct P2P file radar Detects active PeerRoom devices on your local network automatically using a floating radar UI; select a device to stream files browser-to-browser.
👥 Ephemeral room workspaces Allows creating temporary shared rooms at custom URL paths (e.g., /project-alpha) to collaborate across different networks.
📋 Real-time collaborative editor Features a scroll-synchronized collaborative text editor with line numbering for easy sharing of notes, links, and code.
🔒 Secure ephemeral storage Uploaded room files are stored in encrypted Cloudflare R2 bucket storage and accessed via short-lived signed URLs.
🗑️ Automatic self-destruction All shared room files, text editor contents, and room metadata automatically and permanently delete after 7 days.
🧭 Cross-network coordinate pairing Allows quick peer connection across different networks using a simple 6-character coordinate code.
🚫 Zero tracking or analytics Requires no registration or logins, uses no tracking cookies or ads, and collects no telemetry.

🚀 How to Share & Collaborate

1. Direct P2P File Radar 📱 ↔️ 💻

Need to send files directly to a nearby phone, tablet, or computer?

  1. Open PeerRoom on both devices.
  2. The local network Radar automatically discovers nearby active devices.
  3. Click on the target device, select your files, and stream them directly browser-to-browser.

2. Ephemeral Room Workspaces (/your-room) 👥

Need to share files and coordinate text with a group or across different networks?

  1. Create a custom room URL, e.g., peerroom.arshsaxena.in/project-alpha.
  2. Share the link with your team.
  3. Upload files to the shared list and type collaboratively in the real-time text editor.
  4. All room data, clipboard contents, and files automatically self-destruct after 7 days.

🔒 Privacy & Security

  • Direct WebRTC Streaming: Direct P2P transfers are encrypted end-to-end using DTLS and SRTP. Your files stream straight from one device to another without ever passing through or being stored on any server.
  • No Search Engine Indexing: All room pages (/[room]) and static information pages are locked down with noindex, nofollow headers to keep your workspaces private.
  • Worker Auto-Purge: Files temporarily uploaded to shared rooms are stored securely in Cloudflare R2 and hard-deleted automatically along with all room metadata after 7 days.
  • Zero Telemetry Logging: Signaling channels use encrypted WebSockets (WSS) only to exchange SDP handshakes and ICE candidates required to establish peer connections. No file chunks, private keys, or IP logs are stored or inspected.

🛠️ Developers & Self-Hosting

PeerRoom is 100% open-source and easy to host independently.

Architecture

  • Frontend: Next.js (can be deployed to Vercel or Cloudflare Pages).
  • Backend: Signaling server and room database run on Cloudflare Workers using Durable Objects and R2 storage.

Local Setup

  1. Clone the repository:

    git clone https://github.com/arshsaxena/PeerRoom.git
    cd PeerRoom
    npm install
  2. Configure Environment Variables: Create a .env.local file in the root directory:

    NEXT_PUBLIC_WS_URL=ws://localhost:8787
    NEXT_PUBLIC_API_URL=http://localhost:8787
  3. Run Dev Servers:

    • Frontend: npm run dev (starts on http://localhost:3000)
    • Backend Worker: cd worker && npx wrangler dev --ip 0.0.0.0 (starts on http://localhost:8787)

Contributing

Contributions are welcome! Please fork the repository, make your changes on a feature branch, and submit a Pull Request.

📄 License

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

About

Instant P2P File Transfer & Shared Temporary Rooms

Topics

Resources

Stars

Watchers

Forks

Used by

Contributors

Languages