Skip to content

aisurf3r/Fileo-Share

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 

Repository files navigation

πŸ›°οΈ FILEØ

Peer-to-peer file transfer in the browser. No servers. No uploads. No limits.

Drop a file, share the link, done. Files travel directly between devices over end-to-end encrypted WebRTC data channels β€” they never touch a server.

πŸš€ Try it live β†’

Stack Vite TypeScript Tailwind License


✨ Features

  • πŸ”’ End-to-end encrypted β€” WebRTC data channels secured by DTLS-SRTP. No middleman ever sees the bytes.
  • 🚫 Zero server storage β€” files stream peer-to-peer; nothing is ever uploaded or stored.
  • ♾️ No size limits β€” transfer up to 50 GB per file (browser-imposed cap).
  • πŸ“± Cross-device β€” desktop ⇄ mobile ⇄ tablet, any modern browser.
  • πŸ”— Share via link or QR β€” room ID is encoded in the URL.
  • ⏸️ Cancellable transfers β€” kill an in-flight transfer with one click.
  • 🧹 Clear finished β€” sweep completed/cancelled transfers from the list.
  • 🌈 Retrowave UI β€” neon glassmorphism, animated grid, scanlines.
  • πŸ” Self-healing connections β€” auto-reconnect, ghost-peer detection, presence reconciliation.

{1BE20F1A-4F52-4E46-9F8C-F49D1582A78A}

🧠 How it works

   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         signaling (SDP/ICE)         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚  Device  β”‚  ◄──────────────────────────────►   β”‚  Device  β”‚
   β”‚     A    β”‚       via public Nostr relays       β”‚     B    β”‚
   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜                                     β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
        β”‚                                                 β”‚
        β”‚   πŸ” direct WebRTC data channel(E2E encrypted) β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       file bytes flow here
Layer Tech
Transport WebRTC DataChannels (DTLS-SRTP encrypted)
Signaling Trystero over public Nostr relays
NAT traversal Public STUN (Google / Cloudflare) + OpenRelay TURN fallback
Discovery Room ID encoded in URL (?room=...) + QR code
Chunking 256 KB chunks streamed sequentially

Nostr relays only carry the SDP/ICE handshake. Once peers connect, every byte travels directly between devices.


πŸ›‘οΈ Reliability

Mobile networks (CGNAT, captive portals, flaky carriers) eat WebRTC connections for breakfast. Fileo fights back:

  • Auto-reconnect on iceConnectionState failed / disconnected.
  • Liveness ping after a peer joins β€” ghost peers trigger a clean rejoin.
  • Cross-device presence reconciliation fixes asymmetric peer lists.
  • Aggressive first-attempt rejoin with backoff when no peers appear.
  • Multiple Nostr relays β€” if one is blocked or down, others carry the handshake.
  • TURN fallback for symmetric NAT / CGNAT (common on mobile carriers).

🧰 Tech stack

  • React 18 + Vite 5 + TypeScript 5
  • Tailwind CSS v3 + shadcn/ui
  • @trystero-p2p/nostr for signaling
  • lucide-react icons, qrcode for QR generation

πŸ“¬ Contact


About

Peer-to-peer file transfer in the browser. No servers. No uploads. No limits

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors