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

