Simple. Secure. Instant.

How Setu Works

Setu (सेतु = "bridge") connects your devices and people in seconds. Upload files via QR, create real-time rooms for chat & whiteboard — all protected by modern encryption. Here's the full story, in plain language.

Two pages, one bridge

Setu has two main screens. Each has a clear job — together they cover everything from quick file sharing to live collaboration.

🏠

File Transfer Hub

The home page. Pick files or folders, optionally add a password, and generate a QR code + short link. Anyone with the code can scan and download — no login needed. Includes Quick Receive, Receive tab, and History.

  • Upload files / folders (up to 10GB)
  • Optional password & one-time download
  • Auto-delete after 7 minutes
  • Login optional (profile + history)

Live Room & Chat

The collaboration page. Login required. Create or join a room with an 8-character code, QR, or link. Inside: real-time chat (reply, edit, unsend), peer-to-peer file sharing, and a shared whiteboard.

  • Create / Join room (code, QR, link)
  • Live chat with reply & edit
  • P2P file & folder sharing
  • Shared whiteboard (Excalidraw)

How everything connects

From your browser to the server to your friend's phone — here's the full flow of how Setu moves files and messages securely.

🌐 Your Browser File Tranfer / Setu connection Select file → Encrypt Generate QR / Code 🖥️ Setu Server FastAPI + WebSocket • Stores metadata + key • Verifies password (PBKDF2) • Issues download ticket • Relays chat / room signals 🗄️ Encrypted Storage AES-256 encrypted chunks Key never stored raw 📱 Receiver (scans QR) 1. Upload (HTTPS) 2. Store encrypted 3. Share code/QR 4. Download + Decrypt Files are encrypted in your browser → stored as encrypted chunks → decrypted only on authorized download

Figure 1 — End-to-end flow of a file transfer on Setu. Your file never sits on the server in plain form.

From file to download in 5 steps

Here's exactly what happens when you share a file on the home page (File Transfer Hub).

1
📂

Select your files

Open File Transfer Hub, drag files/folders into the upload area or click to browse. You can also pick an entire folder — it gets zipped in your browser.

2
🔑

Add protection (optional)

Set an optional password and tick "One-Time Download" if you want the link to self-destruct after a single fetch. No password? Anyone with the code can still download.

3
📱

Generate QR Code

Click "Generate QR Code". Your file is encrypted and uploaded in chunks. You get a QR code, a short code, and a shareable link.

4
📤

Share it

Send the QR/link via WhatsApp, Email, or just show the QR. The receiver doesn't need a Setu account — they scan and land on the download page.

5
📥

Receive & auto-delete

Receiver enters the code (or scans QR), enters the password if set, and downloads. A 7-minute countdown starts — after that, the link auto-expires. You can also expire it manually.

How Live Rooms connect people

Rooms use WebSockets for instant, bidirectional communication. Here's how two (or more) people join the same room.

👤 User A (Creator) Clicks "Create Room" Gets code: SETU4XY8 Shares QR / link 🔌 WebSocket Server Room: SETU4XY8 Tracks sessions & members Broadcasts chat / files Syncs whiteboard scene 👤 User B (Joiner) Enters code / scans QR Auth token verified Joins room instantly WSS (secure) WSS (secure) Both users connect to the same room over an encrypted WebSocket (wss://). The server relays messages — it does not read them.

Figure 2 — Room connection. Every member opens a secure WebSocket to the server, which routes chat, files, and whiteboard updates to the right room.

What each page actually does

A closer look at the mechanics behind the two pages.

🏠 File Transfer Hub

The home page is built for one thing: move a file from you to someone else, fast, with as little friction as possible.

  • Select files or a folder (auto-zipped in-browser with JSZip)
  • Optional password — hashed with PBKDF2-SHA256 (100,000 iterations)
  • One-time download flag — link dies after first fetch
  • Generate QR — file is AES-256 encrypted, split into chunks, uploaded
  • Share via WhatsApp, Email, QR PNG, print, or copy link
  • Receive tab — enter code, see file list + 7-min countdown
  • History tab — past transfers with codes & protection badges
  • Quick Receive box — one-line code entry on the home page

Drop files here or click

Max: 10GB per Upload

🔒 Password ⏱ 7 min ⬇ One-time
📱
AB3X9K
QR + Link generated

🚪 Live Room & Chat

The room page is a live workspace. Login is required so the server knows who's who — every action is tied to your authenticated session.

  • Auth gate — redirects to login if not authenticated
  • Create Room — server generates an 8-char code + link
  • Join Room — enter code, or scan QR, or open link
  • WebSocket — persistent secure connection for live updates
  • Chat — reply, edit, unsend, context menu, highlighting
  • File sharing — P2P-style send to everyone or specific members
  • Whiteboard — shared Excalidraw canvas, synced in real time
  • Auto-reconnect — room state saved locally, rejoins on refresh
Room: SETU4XY8
WebSocket live • 3 members
Hey team! 🎨
Starting now! ✏️
💬 Chat 📁 Files 🎨 Board

Why your data is safe

Setu is built with security at every layer — encryption, authentication, and auto-expiry. Here's exactly what protects you.

🔐

AES-256 File Encryption

Every file is encrypted with a fresh 256-bit AES key (CFB mode) before it ever leaves your device. The key is wrapped with AES-GCM using a server secret — the raw key is never stored.

🔑

Password Hashing (PBKDF2)

Optional passwords are hashed with PBKDF2-HMAC-SHA256 over 100,000 iterations with a random salt. Verification uses constant-time comparison to prevent timing attacks.

🎫

Secure Download Tickets

Password-protected downloads require a verified ticket. The password is checked server-side, and only then is the wrapped key released for decryption.

🪙

JWT Authentication

Room access (setu.html) requires login. Appwrite issues a JWT that's verified on every API call and WebSocket connection — no anonymous room access.

🔌

Encrypted WebSocket (WSS)

All real-time chat, file, and whiteboard traffic flows over wss:// — TLS-encrypted in transit. The server relays signals; it doesn't read your messages.

⏱️

Auto-Expiry

QR transfers auto-delete after 7 minutes. One-time downloads expire after a single fetch. You can also manually expire a link — only the uploader holds the delete token.

🆔

Session Tracking

Each connection gets a unique session ID. The server tracks active sessions per room, so member lists stay accurate and leaving a room cleanly clears your session.

🧩

Chunked Storage

Large files are split into encrypted chunks (max ~1.9GB each) before storage. No single piece is usable on its own — and the key lives separately from the chunks.

Security Scorecard

A quick summary of how each layer is protected.

95%
Protected
File Encryption
100%
Password Hashing
100%
Transit (WSS/HTTPS)
100%
Auth (JWT)
95%
Auto-Expiry
99.9%
User Data Privacy
100%

* Scores reflect implemented protections. No system is 100% — always use strong passwords and share links only with trusted recipients.

What we keep, and what we don't

Plain answers about where your files and profile information live.

📁

Your Files

Files are encrypted before upload and stored as encrypted chunks. The decryption key is wrapped and stored separately. Even if storage were compromised, the chunks are useless without the wrapped key and the server secret.

👤

Your Profile

If you log in, your name, nickname, email, phone, and country are stored in the Setu database to power your profile card and room membership. This data is tied to your authenticated account — not shared publicly.

💬

Your Messages

Chat messages in rooms are relayed over WebSocket to connected members in the room. They are not permanently stored — when you leave or the room closes, the live session ends.

🗑️

Auto-Deletion

QR file transfers auto-expire after 7 minutes. One-time downloads vanish after a single fetch. You can manually expire links anytime. History entries can be deleted from your History tab.

Quick questions, clear answers

Do I need to log in to share a file?
No. The home page (File Transfer Hub) lets you upload and generate a QR without any account. Login is optional and only adds profile + history features.
Do I need to log in to join a room?
Yes. Live Room & Chat requires authentication so the server can verify who you are and track room membership securely.
Can the server read my files?
No. Files are encrypted in your browser with AES-256 before upload. The server stores encrypted chunks and a wrapped key — it never has the raw key to decrypt your file.
What happens after 7 minutes?
The download link auto-expires. The receiver can no longer download using that code. The uploader can generate a new transfer anytime.
Is my password stored anywhere?
Never in plain text. Passwords are hashed with PBKDF2-SHA256 (100,000 iterations) and a random salt. Only the hash and salt are stored — verification uses constant-time comparison.
Are chat messages saved?
No. Room chat is relayed live over WebSocket to connected members. Messages are not permanently stored on the server — when the session ends, they're gone.

Ready to bridge the gap?

Share a file in seconds, or open a room and start collaborating. No installs, no friction.