Public
E2E encrypted secret sharing with expiring links
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

πŸ” Secret Share – free, trustless E2E secret sharing

πŸ”— https://e2e.val.run/

Send passwords, API keys, and sensitive text to anyone. Your secret contents are encrypted in your browser via a passphrase which never leaves your device.

The code for this service is 100% open-source on Val Town, so you can audit it and trust we're not doing any monkey business with your secrets. What you see at val.town/x/stevekrouse/secret-share is exactly what runs when you use the app.

How It Works

Rendering mermaid diagram...

Project Structure

secret-share/
β”œβ”€β”€ main.ts                          # Hono app β€” mounts API + serves static + SPA shell
β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ db.ts                        # SQLite CRUD (stores only ciphertext + proof)
β”‚   β”œβ”€β”€ rateLimit.ts                 # In-memory per-IP token-bucket middleware
β”‚   β”œβ”€β”€ validate.ts                  # UUID + base64 input validation
β”‚   └── api.ts                       # POST / GET / DELETE /api/secrets
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ index.html                   # Static page shell
β”‚   β”œβ”€β”€ index.tsx                    # Client-side React mount; reads window.location.pathname
β”‚   └── components/
β”‚       └── App.tsx                  # CreateView + RevealView
└── shared/
    β”œβ”€β”€ types.ts                     # Shared TypeScript interfaces
    └── crypto.ts                    # AES-256-GCM + delete-proof derivation

Tech Stack

  • Server: Hono
  • UI: React 18 (client-rendered, no SSR)
  • Styling: Twind
  • Database: Val Town SQLite
  • Crypto: Web Crypto API