All Projects → kern → Filepizza

kern / Filepizza

Licence: other
🍕 Peer-to-peer file transfers in your browser

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HCL
1544 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to Filepizza

Cms.js
Client-Side JavaScript Site Generator
Stars: ✭ 3,016 (-16.73%)
Mutual labels:  single-page-app
Electron Serve
Static file serving for Electron apps
Stars: ✭ 310 (-91.44%)
Mutual labels:  single-page-app
Webrtc Pc
WebRTC 1.0 API
Stars: ✭ 323 (-91.08%)
Mutual labels:  webrtc
Peerjs Server
Server for PeerJS
Stars: ✭ 3,313 (-8.53%)
Mutual labels:  webrtc
Monibuca
🧩 Monibuca is a Modularized, Extensible framework for building Streaming Server
Stars: ✭ 307 (-91.52%)
Mutual labels:  webrtc
Mediasoup
Cutting Edge WebRTC Video Conferencing
Stars: ✭ 4,054 (+11.93%)
Mutual labels:  webrtc
React Admin
A frontend Framework for building B2B applications running in the browser on top of REST/GraphQL APIs, using ES6, React and Material Design
Stars: ✭ 18,525 (+411.46%)
Mutual labels:  single-page-app
React Native Webrtc
The WebRTC module for React Native
Stars: ✭ 3,724 (+2.82%)
Mutual labels:  webrtc
Server
screen sharing for developers https://screego.net/
Stars: ✭ 3,931 (+8.53%)
Mutual labels:  webrtc
Rawrtc
WebRTC and ORTC with a little bit of RAWR!
Stars: ✭ 323 (-91.08%)
Mutual labels:  webrtc
Jeelizar
JavaScript object detection lightweight library for augmented reality (WebXR demos included). It uses convolutional neural networks running on the GPU with WebGL.
Stars: ✭ 296 (-91.83%)
Mutual labels:  webrtc
Webrtc Tutorial
📚 WebRTC 中文教程
Stars: ✭ 305 (-91.58%)
Mutual labels:  webrtc
Gb28181.solution
Linux/Win/Docker/kubernetes/Chart/Kustomize/GB28181/SIP/RTP/SDP/WebRTC/作为上下级域/平台级联互联
Stars: ✭ 323 (-91.08%)
Mutual labels:  webrtc
Awesome Live Stream
Webrtc && Nginx && DASH && Quic 学习资料收集,持续更新中
Stars: ✭ 290 (-91.99%)
Mutual labels:  webrtc
Smoke
Turns a Web Browser into a Web Server with WebRTC
Stars: ✭ 326 (-91%)
Mutual labels:  webrtc
Abstract State Router
Like ui-router, but without all the Angular. The best way to structure a single-page webapp.
Stars: ✭ 288 (-92.05%)
Mutual labels:  single-page-app
Decentralized Video Chat
🚀 Zipcall- Acquired @ 250k users 🚀 Peer to peer browser video calling platform with unmatched video quality and latency.
Stars: ✭ 3,284 (-9.33%)
Mutual labels:  webrtc
Ice4j
A Java implementation of the ICE protocol
Stars: ✭ 332 (-90.83%)
Mutual labels:  webrtc
Redux Requests
Declarative AJAX requests and automatic network state management for single-page applications
Stars: ✭ 330 (-90.89%)
Mutual labels:  single-page-app
Mediasoup Client
mediasoup client side JavaScript library
Stars: ✭ 320 (-91.17%)
Mutual labels:  webrtc

XKCD 949 FilePizza wordmark

Peer-to-peer file transfers in your browser

Cooked up by Alex Kern & Neeraj Baid while eating Sliver @ UC Berkeley.

Using WebRTC, FilePizza eliminates the initial upload step required by other web-based file sharing services. When senders initialize a transfer, they receive a "tempalink" they can distribute to recipients. Upon visiting this link, recipients' browsers connect directly to the sender’s browser and may begin downloading the selected file. Because data is never stored in an intermediary server, the transfer is fast, private, and secure.

A hosted instance of FilePizza is available at file.pizza.

Requirements

  • node 0.12.x
  • npm 2.x.x

Installation

The recommended way to deploy FilePizza is as a Docker container. WebRTC only works over HTTPS, so you'll either have to get a signed HTTPS key/certificate from a CA such as Let's Encrypt or generate your own self-signed pair and trust it. Then, to run FilePizza (with HTTPS termination):

$ docker run \
    -p 8080:8080 -e PORT=8080 \
    -e HTTPS_KEY=/config/server.key \
    -e HTTPS_CERT=/config/server.crt \
    -v mylocalpath:/config \
    -it kern/filepizza:master

You can specify your own ICE STUN/TURN servers for better connectivity behind NATs by passing a JSON encoding of the array via env var ICE_SERVERS. Alternatively, if you'd like to use Twilio's STUN/TURN service, you can specify your SID and token using the TWILIO_SID and TWILIO_TOKEN environment variables, respectively.

You can specify your own Webtorrent tracker(s) using the WEBTORRENT_TRACKERS environment variable, comma-delimited.

If you want to use Google Analytics, you can specify your UA code using the GA_ACCESS_TOKEN="UA-00000000-1" environment variable.

Development

$ git clone https://github.com/kern/filepizza.git
$ npm install
$ npm run-script build
$ npm start

FilePizza is an isomorphic React application which uses the Flux application architecture. ES6 features are used liberally and compiled using Babel. Views are rendered on the server, store data is serialized and sent to the client, which then picks up where the server left off.

Both client and server JavaScript files can be found in lib/. lib/server.js and lib/client.js are the server and client entrypoints, respectively. lib/components/, lib/stores/, and lib/actions/ contain the corresponding Flux modules, implemented using alt. lib/routes.js serves as the isomorphic routes file using react-router.

Client-side JavaScript and CSS are compiled using webpack and are available at /app.js.

FAQ

Where are my files sent? Your files never touch our server. Instead, they are sent directly from the uploader's browser to the downloader's browser using WebTorrent and WebRTC. This requires that the uploader leave their browser window open until the transfer is complete.

Can multiple people download my file at once? Yes! Just send them your tempalink.

How big can my files be? Chrome has issues supporting files >500 MB. Firefox does not have any issues with large files, however.

What happens when I close my browser? The tempalink is invalidated. If a downloader has completed the transfer, that downloader will continue to seed to incomplete downloaders, but no new downloads may be initiated.

Are my files encrypted? Yes, all WebRTC communications are automatically encrypted using public-key cryptography.

My files are sending slowly! Transfer speed is dependent on your network connection.

Troubleshooting

If you receive a Error: EMFILE, too many open files error when running npm start on a Mac, this is a result of Browserify's compilation step opening up a large number of npm modules all at once. You'll have to increase the maximum number of open files allowed on your system:

$ sysctl -w kern.maxfiles=20480

License & Acknowledgements

FilePizza is released under the BSD 3-Clause license. A huge thanks to WebTorrent which we use for the file transfers under the hood, and to iblowyourdesign for the pizza illustration.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].