Skip to content

isiliconx/nextdrop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⬡ NextDrop

Secure LAN File Transfer Portal

MIT License Node.js Socket.IO PRs Welcome

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


✨ 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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors