ephemask Svelte Themes

Ephemask

Disposable email that self-destructs. No signup, no trace. Serverless temp-mail on AWS (SES + Lambda + DynamoDB) with Astro/Svelte web + React Native mobile.

  ┌──────────────────────────────────────────┐
  │  ░▒▓  SECURE CHANNEL ESTABLISHED  ▓▒░   │
  │  >>>  IDENTITY: ANONYMOUS           <<<  │
  │  >>>  TRACE:    NULL                <<<  │
  └──────────────────────────────────────────┘

EPHEMASK

Disposable email that self-destructs. No signup. No trace. No limits.

Ephemask is a serverless temporary email service that lets users receive disposable emails without registration. Inboxes auto-delete after a configurable TTL. Built with Go, Terraform, Astro, Svelte, and React Native.


Architecture

[Internet] → MX Record → [AWS SES Inbound]
                              ↓
                         [S3 Bucket] (raw email storage)
                              ↓
                         [Lambda - email-processor] (Go)
                              ↓
                         [DynamoDB] (parsed email metadata + body)
                              ↓ TTL auto-delete
                         [API Gateway] ← [Lambda - api] (Go)
                              ↓
                         [Frontend Web - Astro + Svelte]
                              ↓
                         [Frontend Mobile - React Native + Expo]

Flow: User gets a random address → SES receives email → S3 stores raw → Lambda parses MIME → DynamoDB stores with TTL → Frontend polls API → Data auto-destructs.


Tech Stack

Layer Tech
Backend Go 1.22+ (AWS Lambda)
Infrastructure Terraform (SES, S3, DynamoDB, API Gateway, Route53)
Frontend Web Astro + Svelte 5 + Tailwind CSS
Frontend Mobile React Native + Expo + Expo Router
Shared Package TypeScript (API client, types, utils)
Monorepo Turborepo + pnpm workspaces

Project Structure

ephemask/
├── terraform/               # AWS infrastructure (SES, DynamoDB, Lambda, API GW, Route53)
├── services/                # Go backend
│   ├── cmd/processor/       # Lambda: processes incoming emails from S3
│   ├── cmd/api/             # Lambda: REST API for frontend
│   ├── internal/email/      # MIME parser (enmime)
│   ├── internal/inbox/      # Models, repository (DynamoDB), service layer
│   ├── internal/handler/    # HTTP handlers
│   └── pkg/randaddr/        # Random address generator
├── packages/shared/         # Shared TypeScript package (@ephemask/shared)
├── apps/web/                # Astro + Svelte web frontend
└── apps/mobile/             # React Native + Expo mobile app

Getting Started

Prerequisites

  • Go 1.22+
  • Node.js 20+
  • pnpm (npm install -g pnpm)
  • Terraform 1.5+ (for infrastructure)
  • AWS CLI configured (for deployment)

Install Dependencies

pnpm install

Run Go Tests

cd services && go test ./... -v

Run Web Frontend (dev)

pnpm --filter shared build
pnpm --filter web dev
# → http://localhost:4321

Run Mobile App (dev)

cd apps/mobile
npx expo start

Build Go Lambdas

make build-go

Deploy Infrastructure

make tf-init
make tf-plan
make tf-apply

API Endpoints

Method Route Description
POST /inbox Generate a new random inbox
GET /inbox/{address} List messages for an inbox
GET /inbox/{address}/messages/{messageId} Get full message detail
DELETE /inbox/{address} Delete inbox and all messages

Business Model

Free Pro ($4/mo)
Inbox TTL 10 minutes Up to 60 minutes
Simultaneous inboxes 1 Multiple
Domain Random Custom
API access - Yes
Forwarding - Yes
Ads Yes No

Environment Variables

Variable Description Default
DYNAMODB_TABLE DynamoDB table name -
S3_BUCKET S3 bucket for raw emails -
DOMAIN Email domain ephemask.dev
DEFAULT_TTL_SECONDS Free inbox TTL 600
ENV Environment (dev/prod) dev
PUBLIC_API_URL API URL for web frontend -
EXPO_PUBLIC_API_URL API URL for mobile app -

Notes

  • AWS Region: us-east-1 (SES inbound only available in us-east-1, us-west-2, eu-west-1)
  • SES Sandbox: Requires exit from sandbox for production receiving
  • Security: Email HTML is sanitized before rendering (iframe sandbox on web, WebView on mobile)
  • CORS: Configured on API Gateway for frontend domain

License

Private project.

Top categories

Loading Svelte Themes