Skip to content

ZeroShare is a secure file drop system that lets you share files via end-to-end encrypted links — like Firefox Send. The server never sees your files or keys, so only the person with the link can open the file.

License

Notifications You must be signed in to change notification settings

Nuu-maan/ZeroShare

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZeroShare

A secure file sharing application with client-side encryption, built with Node.js and Express.

Features

  • 🔒 Client-side encryption using AES-GCM
  • 🔗 Unique, secure download links
  • ⏱️ Automatic file expiration
  • 🚫 One-time download links
  • 🔄 Real-time upload/download progress
  • 📋 Copy to clipboard functionality
  • 🎯 Drag and drop file upload

Prerequisites

  • Node.js (v14 or higher)
  • MongoDB (local or Atlas cluster)
  • npm or yarn

Installation

  1. Clone the repository:
git clone https://github.com/yourusername/zeroshare.git
cd zeroshare
  1. Install dependencies:
npm install
  1. Create a config.js file in the root directory with your configuration:
module.exports = {
    app: {
        name: 'ZeroShare',
        description: 'Secure file sharing with client-side encryption',
        version: '1.0.0',
        maxFileSize: 100 * 1024 * 1024, // 100MB
        supportedFileTypes: '*' // All file types
    },
    security: {
        encryptionAlgorithm: 'AES-GCM',
        keyLength: 256,
        fileExpiry: 24, // hours
        maxDownloads: 1
    },
    database: {
        uri: 'your_mongodb_connection_string'
    },
    server: {
        port: 3000,
        cors: {
            origin: '*',
            methods: ['GET', 'POST'],
            allowedHeaders: ['Content-Type']
        }
    }
};
  1. Create an uploads directory in the root folder:
mkdir uploads

Usage

  1. Start the development server:
npm run dev
  1. For production:
npm start
  1. To share the application temporarily (using ngrok):
npm run share

How It Works

  1. File Upload:

    • User selects a file through the UI
    • File is encrypted client-side using AES-GCM
    • Encrypted file is uploaded to the server
    • A unique download link is generated
  2. File Download:

    • User receives the download link
    • Link contains the file ID and encryption key
    • File is downloaded and decrypted client-side
    • File is automatically deleted after download

Security Features

  • Client-side encryption ensures files are never stored in plain text
  • One-time download links prevent unauthorized access
  • Automatic file expiration after 24 hours
  • Secure key transmission through URL hash
  • No server-side decryption

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some 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.

Acknowledgments

About

ZeroShare is a secure file drop system that lets you share files via end-to-end encrypted links — like Firefox Send. The server never sees your files or keys, so only the person with the link can open the file.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published