add documentation for new features

This commit is contained in:
schlagmichdoch 2023-01-19 19:07:43 +01:00
parent 469d3f6ec8
commit d6d5663ac4
7 changed files with 86 additions and 29 deletions

View File

@ -1,8 +1,18 @@
# Contributing guidelines
# Priorities
- PairDrop should be extremely simple, clean, and easy to use.
- The main user flow should never be obstructed!
- New features must be tested thoroughly before we are able to merge them.
- Stability always comes first!
# Agenda
PairDrop is a study in radical simplicity. The user interface is insanely simple. Features are chosen very carefully because complexity grows quadratically since every feature potentially interferes with each other feature. We focus very narrowly on a single use case: instant file transfer.
We are not trying to optimize for some edge-cases. We are optimizing the user flow of the average users. Don't be sad if we decline your feature request for the sake of simplicity.
If you want to learn more about simplicity you can read [Insanely Simple: The Obsession that Drives Apple's Success](https://www.amazon.com/Insanely-Simple-Ken-Segall-audiobook/dp/B007Z9686O) or [Thinking, Fast and Slow](https://www.amazon.com/Thinking-Fast-Slow-Daniel-Kahneman/dp/0374533555).
# Contributing guidelines
Make sure to follow these guidelines before opening an [issue](https://github.com/schlagmichdoch/pairdrop/issues/new/choose) or a [pull request](https://github.com/schlagmichdoch/pairdrop/pulls):
- An issue is for a bug or a feature request, if you have any question or something similar, please use [Discussions](https://github.com/schlagmichdoch/pairdrop/discussions).
- Before opening an issue of a pull request, please check if the issue or the pull request already exists.
- Pull requests for packages updates are not allowed since there is [Dependabot](https://github.com/schlagmichdoch/pairdrop/blob/master/.github/dependabot.yml) that checks them automatically.
- If you don't know how to contribute, also if you don't know JavaScript or Node.js, you can always help others on [Discussions](https://github.com/schlagmichdoch/pairdrop/discussions), debug the application, share your awesome ideas with a new issue (feature request) and check the whole project for misspellings, too.
- If you don't know how to contribute, also if you don't know JavaScript or Node.js, you can still share your awesome ideas with a new issue (feature request) and check the whole project for misspellings, too.

View File

@ -13,24 +13,38 @@ Developed based on [Snapdrop](https://github.com/RobinLinus/snapdrop)
* You will always discover devices on your local network. Paired devices are shown additionally.
* Paired devices outside your local network that are behind a NAT are connected automatically via [Open Relay: Free WebRTC TURN Server](https://www.metered.ca/tools/openrelay/)
[//]: # (Todo: add File Handler API Doku)
### [Improved UI for sending/receiving files](https://github.com/RobinLinus/snapdrop/issues/560)
* The receiving peer must accept the request of files **before** they are transferred and downloaded automatically afterwords if possible
* Multiple files are downloaded as ZIP file
* On iOS and Android the devices share menu is opened instead of downloading the files
* Multiple files are transferred at one archive which shows the overall progress correctly
* The integrity of the files is checked on receive
* By zipping the files before sending, all metadata is preserved
### Share Files Directly From Share / Context Menu
* [Share files directly form context menu on Windows](/docs/how-to.md#share-files-directly-form-context-menu-on-windows)
* [Share directly from share menu on iOS](/docs/how-to.md#share-directly-from-share-menu-on-ios)
* [Share directly from share menu on Android](/docs/how-to.md#share-directly-from-share-menu-on-android)
### Other changes
* [Paste Mode](https://github.com/RobinLinus/snapdrop/pull/534)
* [Video and Audio preview](https://github.com/RobinLinus/snapdrop/pull/455) (thanks [@victorwads](https://github.com/victorwads))
* [Prevent device from sleeping on file transfer](https://github.com/RobinLinus/snapdrop/pull/413)
* node-only implementation (thanks [@Bellisario](https://github.com/Bellisario))
* automatic restart on error (thanks [@KaKi87](https://github.com/KaKi87))
* lots of stability fixes (thanks [@MWY001](https://github.com/MWY001) [@skiby7](https://github.com/skiby7) [@willstott101](https://github.com/willstott101))
* [Paste Mode](https://github.com/RobinLinus/snapdrop/pull/534)
* [Video and Audio preview](https://github.com/RobinLinus/snapdrop/pull/455) (thanks [@victorwads](https://github.com/victorwads))
* To host PairDrop on your local network (e.g. on Raspberry Pi): [All peers connected with private IPs are discoverable by each other](https://github.com/RobinLinus/snapdrop/pull/558)
## Screenshot
![test](/docs/pairdrop_screenshot_desktop.png)
## Screenshots
![Pairdrop Preview](/docs/pairdrop_screenshot_mobile.gif)
## Snapdrop and PairDrop are built with the following awesome technologies:
## PairDrop is built with the following awesome technologies:
* Vanilla HTML5 / ES6 / CSS3 frontend
* [WebRTC](http://webrtc.org/) / [WebSockets](http://www.websocket.org/)
* [NodeJS](https://nodejs.org/en/) backend
* [Progressive Web App](https://wikipedia.org/wiki/Progressive_Web_App)
* [IndexedDB API](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API)
Have any questions? Read our [FAQ](/docs/faq.md).
@ -39,18 +53,16 @@ You can [host your own instance with Docker](/docs/host-your-own.md).
## Support the Community
PairDrop is free and always will be!
PairDrop is free and always will be. Still, we have to pay for the domain.
Do you want to support me?<br>
To contribute and support me:<br>
<a href="https://www.buymeacoffee.com/pairdrop" target="_blank">
<img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" >
</a>
To support the original Snapdrop and its creator go to [his GitHub page](https://github.com/RobinLinus/snapdrop).
Thanks a lot for supporting free and open software!
To support the original Snapdrop and its creator go to [his GitHub page](https://github.com/RobinLinus/snapdrop).
## How to contribute

View File

@ -17,7 +17,7 @@ services:
- ./public:/usr/share/nginx/html
- ./docker/certs:/etc/ssl/certs
- ./docker/openssl:/mnt/openssl
# Use production.conf instead of development.conf to redirect http to https (/ca.crt still available)
# Use production.conf instead of development.conf to redirect http to https (/ca.crt still available via http)
- ./docker/nginx/development.conf:/etc/nginx/conf.d/default.conf
# - ./docker/nginx/production.conf:/etc/nginx/conf.d/default.conf
ports:

View File

@ -5,12 +5,10 @@ First, [Install docker with docker-compose.](https://docs.docker.com/compose/ins
Then, clone the repository and run docker-compose:
```shell
git clone https://github.com/schlagmichdoch/pairdrop.git
```
```shell
cd pairdrop
```
```shell
git clone https://github.com/schlagmichdoch/PairDrop.git
cd PairDrop
docker-compose up -d
```
Now point your browser to `http://localhost:8080`.
@ -103,7 +101,7 @@ server {
expires epoch;
location / {
root /var/www/pairdrop/client;
root /var/www/pairdrop/public;
index index.html index.htm;
}
@ -124,7 +122,7 @@ server {
expires epoch;
location / {
root /var/www/pairdrop/client;
root /var/www/pairdrop/public;
index index.html;
}
@ -141,7 +139,7 @@ server {
### Using Apache
```
<VirtualHost *:80>
DocumentRoot "/var/www/pairdrop/client"
DocumentRoot "/var/www/pairdrop/public"
DirectoryIndex index.html
RewriteEngine on
@ -150,7 +148,7 @@ server {
RewriteRule ^/?(.*) "ws://127.0.0.1:3000/$1" [P,L]
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/var/www/pairdrop/client"
DocumentRoot "/var/www/pairdrop/public"
DirectoryIndex index.html
RewriteEngine on
@ -173,7 +171,7 @@ When running PairDrop via Docker, the `X-Forwarded-For` header has to be set by
Use nginx or apache to set the header correctly:
### Using nginx
(This differs from the config under `/docker/nginx/default.conf)
(This differs from `/docker/nginx/production.conf`)
```
server {
listen 80;
@ -203,12 +201,12 @@ server {
location / {
proxy_connect_timeout 300;
proxy_pass http://127.0.0.1:443;
proxy_pass http://127.0.0.1:8443;
}
location /server {
proxy_connect_timeout 300;
proxy_pass http://127.0.0.1:443;
proxy_pass http://127.0.0.1:8443;
proxy_set_header Connection "upgrade";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-for $remote_addr;

37
docs/how-to.md Normal file
View File

@ -0,0 +1,37 @@
## Share files directly form context menu on Windows
### Registering to open files with PairDrop
The [File Handling API](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps-chromium/how-to/handle-files) is implemented
This is still experimental and must be enabled via a flag **before** the PWA is installed to Windows.
1. [Enabled feature in Edge](https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps-chromium/how-to/handle-files#enable-the-file-handling-api)
2. Install PairDrop by visiting https://pairdrop.net/ with the Edge browser and install it as described [here](faq.md#help--i-cant-install-the-pwa-).
3. You are done! You can now send most files one at a time via PairDrop:
_context menu > Open with > PairDrop_
[//]: # (Todo: add screenshots)
### Sending multiple files to PairDrop
Outstandingly, it is also possible to send multiple files to PairDrop via the context menu by adding PairDrop to the `Send to` menu:
1. [Register PairDrop as file handler](#registering-to-open-files-with-pairdrop)
2. Hit Windows Key+R, type: `shell:programs` and hit Enter.
3. Copy the PairDrop shortcut from the directory
4. Hit Windows Key+R, type: `shell:sendto` and hit Enter.
5. Paste the copied shortcut into the directory
6. You are done! You can now send multiple files (but no directories) directly via PairDrop:
_context menu > Send to > PairDrop_
[//]: # (Todo: add screenshots)
## Share directly from share menu on iOS
implemented but not documented yet
[//]: # (Todo: add shortcut to routinehub.co and add doku with screenshots)
## Share directly from share menu on Android
The [Web Share Target API](https://developer.mozilla.org/en-US/docs/Web/Manifest/share_target) is implemented but not yet tested.
When the PWA is installed, it should register itself to the share-menu of the device automatically.
Please test this feature and create an issue if it does not work.

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 95 KiB