A temporary, encrypted file sharing service.
Summary of the core functionality used by Temporary.
Temporary uses the following flow to encrypt and upload your files:
- Create a random 16 byte UUID and 8 Byte password
- Encrypt the filename using AES
- Call the backend to create a new chunked file with the given filename
- Split the file into chunks (currently 0.25 MB)
- For each chunk
- Encode each chunk in Base64
- Encrypt it using the generated password and AES
- Upload the file to the backend
- Commit the file on the backend (mark upload as done)
Temporary uses chunker to deal with files in chunks.
The Mnesia based implementation can be found in storable.ex
.
Uploaded files are stored in Mnesia for a limited amount of time (currently 3 days).
For the cleanup a scheduled process (cleanup.ex) runs every 5 minutes to check for old files and deletes them.
git clone https://github.com/eldelto/temporary.git
cd temporary
// Start development server
mix phx.server
// Build Docker image
./docker_build.sh
- Implement chunked upload
- Server
- Client
- Implement chunked download
- Server
- Client
- Prevent download of uncommitted chunked files
- Clean up job for chunked files
- Upload view
- Progress bar
- Custom error toasts
- Counter
- Copy link
- Download view
- Counter
- Download button
- Custom error toasts
- File not found page
- Version number
- Use CSS variables
- Add tests
- Use custom exceptions in error tuple
- Add type specs
- Use web worker for encryption?
- Review encryption