Git Product home page Git Product logo

easyfile's Introduction

EasyFile

Minimalistic E2E-encrypted file sharing web service written in Java + Spring Boot and Javascript + Svelte. (Work in progress, does not yet work on browsers that don't support WriteableStream)

How does it work?

  1. User enters a password to create a bucket or to log in to an existing bucket.
  2. Server responds with a jwt token, stored by the client in localstorage.
  3. The password is also used to generate an AES-GCM encryption key using PBKDF2, which is also stored in localstorage.
  4. To prevent extensive memory usage, big files are encrypted using streaming encryption and uploads will happen in chunks using tus.
  5. Downloads are decrypted using streaming decryption and then downloaded from a service worker to prevent storing the file in memory.

Technologies used

  • Javascript
  • Java
  • Svelte
  • Spring Boot
  • wormhole-crypto
  • tus-js-client
  • streamsaver
  • tus-java-server
  • Flyway
  • Postgres
  • Minio
  • Traefik
  • Docker

Run locally

./ops/dev/up.sh

Requirements:

  • java 11
  • maven
  • docker

easyfile's People

Contributors

thomasverweij avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.