End-to-end encrypted file sharing web application.
- End-to-end encryption: Files are encrypted in your browser before upload. Only the recipient with the link and password can decrypt.
- Modern UI: Clean, responsive upload interface with header, footer, and card-style form.
- Chunked uploads: Large files are split and uploaded in encrypted chunks.
- No account required: Share files securely without registration.
- Configurable timeouts: Set how long files are available for download.
- Requires Python 3.8+
- Install dependencies:
pip install ./api ./webapp
- Requires Node.js (v16+ recommended)
- Install dependencies:
cd webapp npm install
- Build the frontend:
npm run build
- Serve the frontend (for development):
The webapp will be available at http://localhost:8080
npm run serve
- Open your browser and go to http://localhost:8080
- Upload a file, set a time limit, and share the generated link and password with your recipient.
api/— Python backend (Sanic web server, file storage, API)webapp/— Frontend (TypeScript, Choo, Bootstrap)src/gui/— Main GUI codedist_web/— Built static files (served to users)
README.md— This file
- Logo: Place your SVG logo at
webapp/dist_web/logo.svgto appear in the header. - GitHub/Privacy links: Edit
src/gui/upload.tsto update header/footer links.
- Files and metadata are encrypted client-side using strong cryptography.
- Only encrypted data is sent to the backend; the server never sees your keys or plaintext.
- Each upload generates a unique download link and password.
- Frontend uses Choo and Bootstrap for a modern, responsive UI.
- Backend uses Sanic (Python) for async file handling and static file serving.
- See
webapp/package.jsonfor available npm scripts.