nextdrop

# ⬡ NextDrop ### Secure LAN File Transfer Portal [![MIT License](https://img.shields.io/badge/License-MIT-00d4ff.svg?style=for-the-badge)](LICENSE) [![Node.js](https://img.shields.io/badge/Node.js-18+-339933.svg?style=for-the-badge&logo=node.js&logoColor=white)](https://nodejs.org) [![Socket.IO](https://img.shields.io/badge/Socket.IO-4.x-010101.svg?style=for-the-badge&logo=socket.io&logoColor=white)](https://socket.io) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-7c3aed.svg?style=for-the-badge)](CONTRIBUTING.md) **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](#-features) · [Quick Start](#-quick-start) · [How It Works](#-how-it-works) · [Tech Stack](#-tech-stack) ---

✨ Features

### 🚀 Core - **Zero Storage** — Files relay through memory, never saved to disk - **Any File Size** — Chunked streaming handles files of any size - **Real-time Progress** — Live progress bars for sender & receiver - **Drag & Drop** — Drop files anywhere to send instantly - **Multi-file Queue** — Queue up multiple transfers with auto-sequencing ### 🔒 Security - **Encrypted Auth** — Bcrypt-hashed passwords + JWT sessions - **Secure WebSockets** — Authenticated Socket.IO connections - **Transfer Approval** — Recipients must accept before any data flows - **No Cloud** — Everything stays on your local network - **No Tracking** — Zero telemetry, zero analytics
### 💬 Communication - **Live Chat** — Real-time messaging between devices - **Typing Indicators** — See when someone is typing - **Desktop Notifications** — Browser push alerts for incoming files - **Presence System** — See who's online in real-time ### 🎨 Experience - **Premium Dark UI** — Glassmorphism design with smooth animations - **File Preview** — Preview images, videos, audio, PDFs & text - **Responsive Design** — Works on desktop, tablet & mobile - **Transfer History** — Activity feed of all transfers - **Network Stats** — Live transfer count & bandwidth stats

🚀 Quick Start

Prerequisites

Install & Run

# Clone the repo
git clone https://github.com/isiliconx/nextdrop.git
cd nextdrop

# Install dependencies
npm install

# Start the server
npm start

That’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.

Configuration

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'))"

🔧 How It Works

┌──────────┐     ┌──────────────┐     ┌──────────┐
│  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!  │
└──────────┘     └──────────────┘     └──────────┘
  1. Sender selects a recipient and drops a file
  2. Recipient receives a notification and accepts the transfer
  3. Sender’s browser chunks the file (2MB pieces) and streams via Socket.IO
  4. Server relays each chunk in memory — nothing touches disk
  5. Recipient’s browser reassembles chunks into the original file
  6. File is available for preview and download — entirely in the browser

🛠 Tech Stack

Layer Technology
Server Node.js + Express
Real-time Socket.IO 4.x
Auth JWT + bcryptjs
Frontend Vanilla HTML/CSS/JS
Storage None (relay only)

📁 Project Structure

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

🤝 Contributing

Contributions are welcome! Feel free to open issues and pull requests.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

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.