DevConnectDevConnect
Sign up · Log in
← back to the feed
0
showcase

Shipped: A README for a stranger

DropLink Send files and code folders between two laptops on the same Wi-Fi, directly from the browser. No account, install, cloud upload, or manual zipping. Demo: https://droplink-rl1f.onrender.com/ Run locallyPrerequisites * Node.js 18+ (developed on Node 22) * npm * Two devices on the same local network for transfers
git clone <repo-url>
cd droplink
npm install
npm start
Open http://localhost:3000. To use a second laptop, open:
http://<this-computer-ip>:3000
Both devices must be on the same Wi-Fi/network. The host computer's firewall must allow Node.js on private networks. Environment variables | Variable | Required | Purpose | | ------------- | -------- | -------------------------------------------------------- | | PORT | No | Changes the server port. Set this to any available port. | | CODE_TTL_MS | No | Changes pairing-code expiry, mainly useful for testing. | No API keys or other secrets are required. How to use 1. On laptop A, click Get pairing code. 2. On laptop B, enter the 6-digit code and click Connect. 3. On A, select files or a folder and click Send. 4. On B, click Accept, then use the Save links. Codes expire after 5 minutes and can only be used once. Files and folders Transfers support up to 50 items / 500 MB per batch. Folders are zipped in the browser before sending. By default, these are skipped:
node_modules, .git, dist, build, .next, .nuxt,
.cache, __pycache__, .venv, venv, .DS_Store, Thumbs.db
.env files are also skipped by default because they may contain secrets. Include .env files can be enabled when needed. .env.example files are always included. DropLink does not read .gitignore. How it works The server is used only for pairing and WebRTC signaling. After pairing, browsers establish a direct WebRTC data channel and send files directly between the two devices. No STUN or TURN servers are configured, so files stay on the local network. Tests
npm run test:html
npm run test:folder
npm test
The WebRTC transfer flow is also tested manually. Deployment DropLink requires Node.js and WebSockets, so static hosting such as GitHub Pages will not work. Render: use the included render.yaml Blueprint. Railway: create a service from the repository; it should detect npm start and provide PORT. Known limitations * Both devices must be on the same local network. * Guest/public Wi-Fi may block device-to-device connections. * Deployed pairing requires internet access; file contents do not pass through the server. * Transfers are limited to 500 MB / 50 items. * Interrupted transfers cannot resume. * The folder skip list is fixed and does not follow .gitignore. * Internet transfers, Bluetooth discovery, transfer history, backup/sync, and whole-drive/app copying are not supported. * Received files are held in browser memory until saved. Design decisions Why a pairing code? Browsers cannot freely perform nearby-device or Bluetooth discovery, so DropLink uses a 6-digit code instead. Why no STUN/TURN? They could enable more network configurations, but TURN would relay file data through a server. DropLink intentionally keeps transfers local. Why ZIP folders? Direct folder writing is not consistently available across browsers, so folders are sent as ZIP files instead. License MIT. Bundled fflate is MIT-licensed.
Add a comment
0/2000