← All templates

Email Client

Communication · React + Node (Express) · 19 @molecule/* packages

Gmail-like email client with IMAP/SMTP, labels, compose, threads, and search — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • labels
  • threads
  • compose
  • attachments
  • subscriptions

Screens (11)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Inbox /inbox (signed in)
  • Compose /compose (signed in)
  • ThreadView /thread/:id (signed in)
  • Drafts /drafts (signed in)
  • Starred /starred (signed in)
  • Settings /settings (signed in)

Data model (8 tables)

  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • email_folders — id, user_id, name, color, created_at, updated_at, updatedAt
  • email_label_assignments — id, label_id, email_id, created_at
  • email_labels — id, user_id, name, color, created_at, updated_at, updatedAt
  • emails — id, user_id, thread_id, from, to, cc, bcc, subject, …
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • resource_tags — id, tagId, resourceType, resourceId, createdAt
  • tags — id, name, slug, color, description, createdAt, updatedAt

API (5 handlers)

  • \_seed api/src/handlers/_seed.ts
  • drafts api/src/handlers/drafts.ts
  • emails api/src/handlers/emails.ts
  • folders api/src/handlers/folders.ts
  • labels api/src/handlers/labels.ts

Subscription tiers

free / pro / team — gated by: maxDrafts, maxEmails, maxFolders, maxLabels, advancedFeatures, canExport, retentionDays

Built from 19 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • S3_BUCKET S3 bucket for email attachments
  • MAILGUN_API_KEY Mailgun API key for sending emails

The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing