2018-09-21 19:51:29 +02:00
# Snapdrop
2015-12-18 16:50:36 +01:00
2018-09-21 19:51:29 +02:00
[Snapdrop ](https://snapdrop.net ): local file sharing in your browser - inspired by Apple's Airdrop.
2017-01-14 21:52:52 +01:00
2018-09-24 13:14:11 +02:00
#### Snapdrop (Version 2) is built with the following awesome technologies:
2018-09-21 19:51:29 +02:00
* Vanilla HTML5 / ES6 / CSS3
* Progressive Web App
2015-12-29 01:42:01 +01:00
* [WebRTC ](http://webrtc.org/ )
* [WebSockets ](http://www.websocket.org/ ) fallback (iDevices don't support WebRTC)
* [NodeJS ](https://nodejs.org/en/ )
2016-10-09 00:28:20 +02:00
* [Material Design ](https://material.google.com/ )
2015-12-18 16:50:36 +01:00
2018-09-21 16:12:21 +02:00
2015-12-29 01:42:01 +01:00
### Frequently Asked Questions
2015-12-18 16:50:36 +01:00
2015-12-30 23:00:29 +01:00
### Instructions
* [Video Instructions ](https://www.youtube.com/watch?v=4XN02GkcHUM ) (Big thanks to [TheiTeckHq ](https://www.youtube.com/channel/UC_DUzWMb8gZZnAbISQjmAfQ ))
2015-12-31 02:17:02 +01:00
* [idownloadblog ](http://www.idownloadblog.com/2015/12/29/snapdrop/ )
* [thenextweb ](http://thenextweb.com/insider/2015/12/27/snapdrop-is-a-handy-web-based-replacement-for-apples-fiddly-airdrop-file-transfer-tool/ )
* [winboard ](http://www.winboard.org/artikel-ratgeber/6253-dateien-vom-desktop-pc-mit-anderen-plattformen-teilen-mit-snapdrop.html )
2018-09-24 13:14:11 +02:00
* [免費資源網路社群 ](https://free.com.tw/snapdrop/ )
2015-12-30 23:00:29 +01:00
2015-12-29 01:45:10 +01:00
##### What about the connection? Is it a P2P-connection directly from device to device or is there any third-party-server?
It uses a P2P connection if WebRTC is supported by the browser. (WebRTC needs a Signaling Server, but it is only used to establish a connection and is not involved in the file transfer).
2015-12-18 16:50:36 +01:00
2018-09-24 13:14:11 +02:00
If WebRTC isn’ t supported (Safari, IE) it uses a Web Sockets fallback for the file transfer. The server connects the clients with each other.
2015-12-18 16:50:36 +01:00
2015-12-29 01:45:10 +01:00
##### What about privacy? Will files be saved on third-party-servers?
None of your files are ever saved on any server.
2018-10-25 18:49:51 +02:00
Snapdrop doesn't even use a database. If you are curious have a look [at the Server ](https://github.com/RobinLinus/snapdrop/blob/master/server/ ).
2015-12-18 16:50:36 +01:00
2015-12-29 01:42:01 +01:00
##### Is SnapDrop a fork of ShareDrop?
2018-09-21 16:12:21 +02:00
No. ShareDrop is built with Ember. Snapdrop is built with vanilla ES6.
I wanted to play around with Progressive Web Apps and then I got the idea of a local file sharing app. By doing research on this idea I found and analysed ShareDrop. I liked it and thought about how to improve it.
2018-09-24 13:14:11 +02:00
ShareDrop uses WebRTC only and isn't compatible with Safari browsers. Snapdrop uses a Websocket fallback and some hacks to make Snapdrop work due to the download restrictions on iDevices.
2015-12-18 16:50:36 +01:00
2015-12-29 01:42:01 +01:00
### Snapdrop is awesome! How can I support it?
2016-12-07 01:30:43 +01:00
* [File bugs, give feedback, submit suggestions ](https://github.com/RobinLinus/snapdrop/issues )
2015-12-30 23:00:29 +01:00
* Share Snapdrop on your social media.
2016-01-02 02:26:47 +01:00
* [Buy me a cup of coffee ](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=R9C5E42UYEQCN )
2018-09-24 13:14:11 +02:00
* Fix bugs and make a pull request.
* Do security analysis and suggestions
2015-12-18 16:50:36 +01:00
2018-09-21 16:12:21 +02:00
## Local Development
```
2018-09-21 19:51:29 +02:00
git clone git@github.com:RobinLinus/snapdrop.git
cd snapdrop/server
2018-09-21 16:12:21 +02:00
npm install
node index.js
2018-09-24 13:14:11 +02:00
# open a second shell:
cd snapdrop/client
2019-02-18 13:03:01 +01:00
# Python 2
2018-09-21 19:51:29 +02:00
python -m SimpleHTTPServer
2019-02-18 13:03:01 +01:00
# Python 3
python3 -m http.server
2018-09-21 16:12:21 +02:00
```
Now point your browser to http://localhost:8000.
## Deployment Notes
The client expects the server at http(s)://your.domain/server.
When serving the node server behind a proxy the `X-Forwarded-For` header has to be set by the proxy. Otherwise all clients that are served by the proxy will be mutually visible.
2015-12-29 17:29:32 +01:00
2018-09-21 16:12:21 +02:00
By default the server listens on port 3000.
2016-01-02 14:19:11 +01:00
2018-09-21 16:12:21 +02:00
For an nginx configuration example see `nginx.conf.example` .
2016-01-02 14:19:11 +01:00
## Licences
2016-12-07 01:30:43 +01:00
* Thanks to [Mark DiAngelo]() for the [Blop Sound ](http://soundbible.com/2067-Blop.html )