Skip to content

Repository files navigation

AtomMail

typing

Disposable email in minutes. No account, no tracking, no permanent storage.
Built on Cloudflare Workers. Inboxes die with their TTL.

Why · Features · Architecture · Quick start · Deploy · Config

License TypeScript Next.js Cloudflare Supabase

Stars Forks Last commit Issues PRs welcome


✨ Why

Need an inbox for one signup. Not another identity.

Most temp-mail products keep messages, fingerprint visitors, or force an account. AtomMail is the opposite: a short-lived inbox on the edge.

Pain What AtomMail does
Sign-up just to receive one code Instant disposable address, no account
Messages linger forever Automatic cleanup after a short TTL
Tracking pixels and analytics No tracking, no persistence by design
Heavy VPS for a throwaway inbox Cloudflare Workers + KV + D1

Default TTL is intentionally short. Self-hosted instances can raise it in Worker / KV settings.

🧩 Features

⏱ Temporary inboxes

Addresses exist only as long as the configured TTL. Empty state after expiry is expected.

🛡 Privacy by default

No sign-up. No tracking. Messages are never stored permanently.

⚡ Edge runtime

Cloudflare Workers for ingest and routing. KV / D1 for short-lived state.

🖥 Next.js UI

App Router frontend with Tailwind and Framer Motion.

🗂 Admin companion

Dashboard lives in atommail-admin.

☁ Deploy anywhere

Wrangler for the worker. Vercel or Next.js for the UI.

🏗 Architecture

flowchart LR
  S["Sender"] --> CF["Cloudflare Email Routing"]
  CF --> W["Worker"]
  W --> KV["KV / D1<br/>TTL state"]
  W --> UI["Next.js inbox UI"]
  UI --> SB["Supabase<br/>optional"]
Loading
atommail/
├── app/                 # Next.js App Router UI
├── components/
├── lib/
├── worker/              # Cloudflare Worker
├── supabase/
└── package.json

⚡ Quick start

git clone https://github.com/awhite0030/atommail.git
cd atommail
npm install
npm run dev              # UI
npm run worker:dev       # Cloudflare Worker

Declare KV / D1 bindings in wrangler.toml first. Mismatched binding names are the most common local startup failure.

🚀 Deploy

npm run worker:deploy
wrangler secret put SUPABASE_URL
wrangler secret put SUPABASE_SERVICE_ROLE_KEY

After deploy, confirm KV and D1 bindings in the Cloudflare dashboard and watch Worker logs. Free-tier KV write limits can fail cleanup under heavy use.

⚙ Configuration

Variable Purpose
SUPABASE_URL Supabase project URL (optional / admin path)
SUPABASE_SERVICE_ROLE_KEY Service role for worker / admin

Inbox lifetime is approximate and depends on TTL plus the worker schedule. A very short TTL can look empty quickly — that is expected.

📄 License

MIT © 2026 A. White

footer

About

Disposable email in 10 minutes. No sign-up, no tracking, no persistence. Built on Cloudflare Workers.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages