Skip to content

robin-thomas/nubox

Repository files navigation

nuBox - Decentralized encrypted Dropbox

License

Table of Contents

  1. What is nuBox?
  2. Requirements
  3. Features
  4. Known Issues

What is nuBox?

Nubox is a blockchain-based file storage solution built on top of NuCypher (using nuBox chrome extension) and IPFS. You can upload and download files of any size, create folders, delete and rename files and folders, drag and drop files around, share files with anyone - totally feel like using a filesystem!

Requirements:

Features:

  • Password-less login - (login with your Metamask account).

    • nuBox browser-side library uses Metamask to create a digital signature, that's sent to the nuBox server for verification.
    • Once verified, it replies back with a JWT that's valid for 1 hour.
    • But it also provides a refresh token that the browser can send to the server to create another JWT, when it expired.
    • All the above operations are transparent to the user (except the Metamask popup to create the signature).
  • Unlimited file size -

    • nuBox supports files of any size.
    • All files are broken into chunks of 256KB, encrypted using NuCypher and then uploaded to IPFS.
  • Unique shareable link per file -

    • Each file gets a unique link that can be shared with anyone.
    • Whenever anyone tries to access the link, the IPFS hashes where the file is stored is encoded in the HTTP response headers (Chrome has serious limitations in the context of chrome extensions. Hence response headers and not response body).
    • nuBox chrome extension will be listening for the response headers. Once the headers are decoded, it opens up a stream to start saving the file, download encrypted data from IPFS one by one, decrypt it through NuCypher (decrypt will fail, if the person who is downloading hasn't been granted access), and send it to the stream! Voila!
    • Streams are helpful while downloading files of huge sizes. Rather than keeping the whole file in the memory (all decrypted chunks joined to make the complete file), we just have to keep one chunk (256KB) of the file in the memory at a time!
    • All the above operations are completely transparent to the user. They are not even aware of the complexity behind everything happening!
  • Share file with anyone (or revoke access)

    • You can share a file with any contact for a specified duration of time.
    • You can delete a shared file, yet the file will be accessible for anyone previously shared with (unless their access is revoked later).
    • Individually revoke access for any contact.
    • You only encrypt the file data once, but it can be shared with anyone in the future without any hassle!
  • File Upload

    • nuBox allows you to choose multiple files to upload at any time.
    • All files to be uploaded are dumped onto a job queue.
    • Currently the job queue is set to process one file at a time (rest of the jobs will be queued).
    • File uploads can be paused and resumed.
    • The UI shows the file upload progress as well as the total progress of the all the uploads.
    • It shows file size in human readable form, as well as the total size of all the uploads.
  • File/Folder operations

    • File operations:
      • Upload, rename, delete, and/or download a file
      • Drag files into different folders (move files)
      • Share a file with one or more contacts
      • See the contacts with whom the file has been shared with
      • Revoke access to a file for one or more contacts (latest NuCypher release do not support individual revoke operation, but rather revoking everyone who has been granted access. But nuBox supports this, after modifying NuCypher code)
      • View file metadata
    • Folder operations:
      • Create, rename, and/or delete a folder
      • Accept any dropped files
      • View folder metadata
  • Clean Materialistic UI

    • UI inspired by Google Drive - get the feeling of using Google Drive, but hey, you control the files!
    • Right-clicking on any file or folder will open up the options for the various file (or folder) operations.
    • View all files that are shared for you
    • View the total size of the files upload
    • View various activity in your account (Uploading, renaming, deleting, moving and sharing files and folders)

Known issues:

  • NuCypher
  • Infura IPFS - it might throw 504 or gateway errors while trying to upload or download a file. Certain times, it'll be quite slow.
  • The demo is hosted on free Heroku server, which goes to sleep regularly. So it can be a bit slow to download all the frontend files initially.

Free Software, Hell Yeah!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published