Imagine you're passing a note directly to your friend across the room instead of putting it on a bulletin board for everyone to see. That's basically what ZapFile does with your files. When you share a file through ZapFile, it goes straight from your device to the recipient's device. No middleman, no cloud storage, no servers keeping copies. Just you and them.
We use something called WebRTC (Web Real-Time Communication). It's a technology built into your browser that was originally designed for video calls, but it turns out it's also perfect for sending files directly between devices. Our server is just the person who introduces two strangers at a party. Once you've been introduced, you can talk directly to each other. The server's job is done.
When you select a file to send, we generate a random room code. This is basically a unique meeting point where sender and receiver can find each other. Share that code (or the link with the code in it) with whoever needs to receive your file. The codes are random and temporary. Once the transfer is done, that's it - the room doesn't exist anymore.
Breaking files into smaller pieces (we call them chunks) makes everything more reliable. If something hiccups during transfer, we don't have to restart the whole thing. Plus, we can send multiple chunks at once, which speeds things up. Right now we send up to 4 chunks simultaneously. Each chunk is about 5MB.
WebRTC encrypts everything by default. We're talking DTLS (Datagram Transport Layer Security) and SRTP (Secure Real-time Transport Protocol). Basically, even if someone could intercept your data (which is already super unlikely), they couldn't read it. And since we never store your files, there's nothing to steal from us. Can't hack what doesn't exist.
Resume support is at the top of our list. Nobody wants to restart a 10GB transfer because their WiFi hiccupped. We're also looking at better connection fallbacks for when direct peer-to-peer doesn't work (like when both people are behind strict NATs).