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?
- User enters a password to create a bucket or to log in to an existing bucket.
- Server responds with a jwt token, stored by the client in localstorage.
- The password is also used to generate an AES-GCM encryption key using PBKDF2, which is also stored in localstorage.
- To prevent extensive memory usage, big files are encrypted using streaming encryption and uploads will happen in chunks using tus.
- 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: