Skip to content

E2EE form data (e.g., contact/wait-list) API – works on any static site, uses post-quantum hybrid KEMs (Kyber 768 + X25519) under the hood, streams blobs straight into the cloud, and lets owners decrypt In-Browser.

License

Notifications You must be signed in to change notification settings

collapsinghierarchy/noisybuffer

Repository files navigation

NoisyBuffer — End-to-End Encrypted Forms API

NoisyBuffer is an end-to-end-encrypted (E2EE) form backend for static sites and Jamstack pages. A drop-in <script> seals every field in the browser with post-quantum crypto (Kyber-768 × X25519 → AES-256-GCM) and streams an opaque blob to a lightweight Go API—so neither your server nor any third-party ever sees plaintext. Plug it in where you’d use Formspree or Netlify Forms and stay GDPR-proof and post-quantum ready.

Status: early WIP — API surface will change


✨ Features

Capability Details
True E2EE Form data is encrypted in the browser; the server only stores opaque blobs.
Post‑quantum hybrid Kyber‑768 × X25519 → AES‑256‑GCM. With hpke-js and WebCrypto API
Static‑site friendly Works behind GitHub Pages, Netlify, S3, etc. — just drop the JS snippet.
Owner export Stream /nb/v1/pull → decrypt locally → JSON / CSV.

XWING KEM and browser‑based exporter are on the roadmap.

🚀 Quick Start (dev)

git clone https://github.com/whitenoise/noisybuffer
cd noisybuffer
docker compose up -d            # Postgres + API
open http://localhost:1234      # demo Push/Pull page

🏗️ Embed on any page (Preview of the Functionality)

<script src="URL/nb.js"></script>
<script>NB.init({appId:'bc8c5b3c-b496-4dcc-8551-575978214c44'})</script>

<form data-noisybuffer>
  <input name="email" required>
  <button>Join wait‑list</button>
</form>

The snippet fetches your public key, encrypts fields, and calls /nb/v1/push.


📦 Project layout

cmd/noisybufferd/   main.go + embedded demo UI
handler/            HTTP handlers (push, pull, key)
service/            domain logic (validation, E2EE)
store/postgres/     SQL adapter (implements store.Store)
web/                index.html, app.js test harness

Contributions welcome! Open issues or pull requests to discuss improvements.

About

E2EE form data (e.g., contact/wait-list) API – works on any static site, uses post-quantum hybrid KEMs (Kyber 768 + X25519) under the hood, streams blobs straight into the cloud, and lets owners decrypt In-Browser.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published