Transfer files instantly across your local network — no cloud, no storage, no limits.
NextDrop is a zero-storage, real-time file transfer portal for your LAN. Drop a file on one device, it appears on another. Files are relayed through the server in memory and never touch the disk.
Features · Quick Start · How It Works · Tech Stack
|
|
|
|
- Node.js v18 or higher
# Clone the repo
git clone https://github.com/isiliconx/nextdrop.git
cd nextdrop
# Install dependencies
npm install
# Start the server
npm startThat's it! NextDrop will print the URL to access from any device on your network:
_ _ _ ____
| \ | | _____ _| |_| _ \ _ __ ___ _ __
| \| |/ _ \ \/ / __| | | | '__/ _ \| '_ \
| |\ | __/> <| |_| |_| | | | (_) | |_) |
|_| \_|\___/_/\_\\__|____/|_| \___/| .__/
|_|
✓ NextDrop running on:
→ Local: http://localhost:3000
→ Network: http://192.168.1.100:3000
Open the network URL on any device connected to your LAN — phones, laptops, tablets, anything with a browser.
Copy .env.example to .env and customize:
cp .env.example .env| Variable | Default | Description |
|---|---|---|
PORT |
3000 |
Server port |
JWT_SECRET |
(random) | Secret key for JWT tokens |
JWT_EXPIRY |
24h |
Token expiration time |
Tip: For production, always set a strong random
JWT_SECRET:node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
┌──────────┐ ┌──────────────┐ ┌──────────┐
│ Sender │────▶│ NextDrop │────▶│ Receiver │
│ Browser │ │ Server │ │ Browser │
│ │ │ (relay only) │ │ │
│ Chunk 1 ─┼────▶│─ forward ───▶┼────▶│ Chunk 1 │
│ Chunk 2 ─┼────▶│─ forward ───▶┼────▶│ Chunk 2 │
│ Chunk N ─┼────▶│─ forward ───▶┼────▶│ Chunk N │
│ │ │ │ │ ═══════ │
│ │ │ 🚫 No Disk │ │ ✓ File! │
└──────────┘ └──────────────┘ └──────────┘
- Sender selects a recipient and drops a file
- Recipient receives a notification and accepts the transfer
- Sender's browser chunks the file (2MB pieces) and streams via Socket.IO
- Server relays each chunk in memory — nothing touches disk
- Recipient's browser reassembles chunks into the original file
- File is available for preview and download — entirely in the browser
| Layer | Technology |
|---|---|
| Server | Node.js + Express |
| Real-time | Socket.IO 4.x |
| Auth | JWT + bcryptjs |
| Frontend | Vanilla HTML/CSS/JS |
| Storage | None (relay only) |
nextdrop/
├── server/
│ ├── index.js # Express + Socket.IO server
│ ├── auth.js # Authentication routes & JWT
│ └── socketHandlers.js # Transfer relay, chat, presence
├── public/
│ ├── index.html # SPA shell
│ ├── css/
│ │ └── style.css # Premium dark glassmorphism theme
│ └── js/
│ ├── app.js # App controller & socket management
│ ├── auth.js # Login/register UI
│ ├── fileTransfer.js # Chunked transfer engine
│ ├── chat.js # Real-time chat
│ └── dashboard.js # Users, stats & activity
├── package.json
├── .env.example
├── LICENSE
└── README.md
Contributions are welcome! Feel free to open issues and pull requests.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License — see the LICENSE file for details.
Built with ❤️ for local networks everywhere
⬡ NextDrop — Your files, your network, zero cloud.