Go to file
Kumi 91c3e4b547
feat(ui): update URL without reloading after file upload
Added pushState to update the URL with the mnemonic after file upload, enhancing user experience by reflecting the unique file link in the address bar without reloading the page. This helps in easier sharing and bookmarking of the link.
2024-06-15 15:24:14 +02:00
public feat(ui): update URL without reloading after file upload 2024-06-15 15:24:14 +02:00
views refactor: remove redundant root route and streamline mnemonic rendering 2024-06-15 15:03:33 +02:00
.gitattributes chore(gitattributes): limit linguist-vendored to webtorrent 2024-06-14 17:59:36 +02:00
.gitignore feat: add STUN/TURN server support and environment config 2024-06-14 18:32:51 +02:00
app.js refactor: remove redundant root route and streamline mnemonic rendering 2024-06-15 15:03:33 +02:00
LICENSE docs: add LICENSE and README files 2024-06-14 18:59:32 +02:00
package-lock.json feat: add initial WebTorrent-based file transfer app 2024-06-14 16:57:55 +02:00
package.json feat: add initial WebTorrent-based file transfer app 2024-06-14 16:57:55 +02:00
README.md docs: add LICENSE and README files 2024-06-14 18:59:32 +02:00
tracker.js style(tracker): standardize string quotations 2024-06-14 17:15:11 +02:00

Transfer.coffee

Support Private.coffee! Matrix Latest Git Commit

Transfer.coffee is a simple Node.js web application that allows users to share files using WebTorrent. Users can upload files, generate mnemonic seeds, and share these seeds with others to download the files directly via peer-to-peer connections. The application supports optional configuration of STUN and TURN servers to facilitate NAT traversal.

Features

  • Peer-to-peer file sharing using WebTorrent
  • Mnemonic seed generation for easy file sharing
  • Optional STUN and TURN server configuration for NAT traversal
  • Progress indicators for file upload and download
  • Configurable tracker URL
  • Bundled WebTorrent tracker

Prerequisites

  • Node.js (tested with v22.3 but anything recent should work)
  • npm

Installation

  1. Clone the repository:
git clone https://git.private.coffee/PrivateCoffee/transfer.coffee.git
cd transfer.coffee
  1. Install the dependencies:
npm install
  1. Optional, but recommended for production: Put the application behind a reverse proxy (e.g. Caddy or nginx) and configure SSL.

Configuration

You can configure the application using environment variables:

  • TRACKER_URL: The WebTorrent tracker URL (default: ws://localhost:8106)
  • STUN_SERVER_URL: The STUN server URL (optional - not used if unset)
  • TURN_SERVER_URL: The TURN server URL (optional - not used if unset)
  • TURN_SECRET: The static-auth-secret for the TURN server (required if TURN_SERVER_URL is set)

Running the Application

  1. Start the tracker:
npm run tracker
  1. Set the environment variables and start the server:
export TRACKER_URL="wss://tracker.your-domain.com" # URL of the WebTorrent tracker - default: ws://localhost:8106, use wss:// for secure connections 
export STUN_SERVER_URL="stun:stun.nextcloud.com:443" # Optional - there are public STUN servers available - not used if unset
export TURN_SERVER_URL="turn:your-turn-server-url" # Optional - you would need to set up your own TURN server - don't set this if you don't have one
export TURN_SECRET="your-static-auth-secret" # Required if you have a TURN server - don't set this if you don't have one
npm start
  1. Open your browser and navigate to http://localhost:3000.

Usage

Sharing a File

  1. Select a file to share using the file input.
  2. Click the "Share" button.
  3. Share the generated mnemonic seed with others.

Receiving a File

  1. Enter the mnemonic seed in the input field.
  2. Click the "Receive" button.
  3. The file will be downloaded directly from the peer.

License

This project is licensed under the MIT License. See the LICENSE file for details.