FilePizza v2 🍕
This is a ground-up rewrite for FilePizza that fixes many of the long-standing issues, modernizes the stack, and adds a host of new features. I'd say that it's about 95% of the way toward feature-parity already.
New features
- Add passwords to file transfers to guard against unwanted downloads
- Multiple files can be uploaded at once, downloader gets a zip
- Uploads and downloads of very large files work without issues on most browsers thanks to StreamSaver
- Uploaders see progress bar indicators and browser information about downloaders
Major technical updates
- No more WebTorrent, transfers happen over "raw" WebRTC w/ peer.js for discovery
- This fixes the slow client handshakes / DHT discovery that occurs with FilePizza v1.
- Rewrite of the server using Next.js + TypeScript
- Uses React hooks for all client-side logic (no more old-school Flux, crazy how quickly things change!)
- Uses Redis as a temporary store for handshake information
- Server has no knowledge of file metadata (name, size, etc.)
What's left:
- [x] Minor UX / styling improvements (cross-browser testing, dark mode, full-screen drop zone, file selector, footer styling, etc.)
- [ ] Migrate off peerjs to raw WebRTC
- [ ] Integration with coturn username/password authentication for self-hosted TURN servers
- [ ] Support for custom/third-party STUN/TURN servers (like Twilio)
- [ ] Better error case handling on network connectivity loss
- [ ] End-to-end testing, snapshot tests
- [ ] T&S measures
- [ ] Documentation of the file transfer protocol
Timeline
- I hope to have a few more weeks to test things locally, addressing the above bullet points.
- I'll shift focus toward ensuring cross-browser compatibility, especially on mobile browsers. Would love your help here when we reach this stage.
- I'll mint the release and push it to my production instance.
Excited for this much-needed update!
Note: my apologies for radio silence here the past few months. This project was something I built back in college and just haven't given enough love to over the years. I hope that with this update, the project will be in a much better state, and allow others to participate more actively in development. As I'm currently working on this rewrite, I won't be accepting other issues/PRs
This looks great! I am very exited for darkmode :waxing_crescent_moon:
I have a little question, is it dead? Because i love this project and was excited about the 2.0