npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

filepizza

v1.1.0

Published

Free peer-to-peer file transfers in your browser.

Downloads

29

Readme

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.

$ docker run -p 8080:8080 -e PORT=8080 -it kern/filepizza:latest

You can also use zeit/now:

$ now --npm --public -e NODE_ENV=production

If you'd like to use Twilio's STUN/TURN service for better connectivity behind NATs, you can specify your SID and token using the TWILIO_SID and TWILIO_TOKEN environment variables, respectively.

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.