{
 "schema_version": 1,
 "generated": "2026-10-23",
 "id": "marclou-mailcheap--self-host-newsletter-on-vercel-with-ses",
 "repo": "marclou/mailcheap",
 "repo_url": "https://github.com/marclou/mailcheap",
 "repo_slug": "marclou-mailcheap",
 "title": "Self-host a newsletter app on Vercel with Amazon SES",
 "page_title": "How to self-host a newsletter app on Vercel with Amazon SES with Mailcheap",
 "summary": "Deploy the open source MailCheap app to your own Vercel project and send through your own Amazon SES account.",
 "who": "A developer or technical publisher who wants full control of the data and pays only the sending provider per email.",
 "problem": "Hosted newsletter tools charge monthly for subscribers, including dormant ones, and keep your contacts on their platform.",
 "outcome": "A self-hosted newsletter on your own domain, sending through your SES account, with sign-in limited to the emails you list.",
 "steps": [
  "Create a free MongoDB Atlas cluster, allow 0.0.0.0/0 under Network Access, and copy the connection string with a database name added before the `?`.",
  "Click Deploy on the repository's README, then fill in MONGODB_URI, BETTER_AUTH_SECRET, SUPPRESSION_HASH_KEY, ADMIN_EMAILS and EMAIL_FROM. Generate each secret with `openssl rand -base64 48`.",
  "Set up sign-in codes through Resend or your email provider, then open https:// .vercel.app/signin and sign in with your email.",
  "Follow the README's email provider and QStash steps for Amazon SES and Upstash QStash, and leave SENDING_ENABLED unset until both are done.",
  "Check that `/api/health` answers 200 before you send your first issue."
 ],
 "agent_prompt": "In the marclou/mailcheap repository, follow the self-hosting steps for Vercel with my MongoDB connection string in <MONGODB_URI> and my admin email in <ADMIN_EMAILS>. Report which environment variables are still missing and whether /api/health returns 200. Verify that SENDING_ENABLED is not set to true before the email provider is configured.",
 "agents": [
  "any"
 ],
 "difficulty": "Advanced",
 "time": "60 minutes",
 "basis": "readme",
 "caveat": "Self-hosting comes without support, and the README says plan for about an hour, most of it waiting for DNS and for SES production access.",
 "category": "Content",
 "tags": [
  "Content"
 ],
 "lang": "javascript",
 "requirements": [
  "A MailCheap Cloud account at mailcheap.ai, or a server with Node.js 22+ and a MongoDB database for self-hosting",
  "For self-hosting: an Amazon SES or PostShiba account, plus Upstash QStash for background sending",
  "A list of contacts with consent to email them, or an export CSV from beehiiv, Substack, Mailchimp or another supported tool",
  "An AI agent or API key if you want an agent to write or send issues"
 ],
 "risk": "dual-use",
 "seen_in_the_wild": false,
 "mentioned_publicly": false,
 "risks": [
  {
   "tag": "credentials",
   "notice": "The database URI, the signing secret and your SES keys are all sensitive, so store them only in the hosting platform's environment settings."
  }
 ],
 "best": false,
 "score": 0.9,
 "evidence": [],
 "url": "https://dedupedai.com/use-cases/marclou-mailcheap/self-host-newsletter-on-vercel-with-ses/",
 "md": "https://dedupedai.com/use-cases/marclou-mailcheap/self-host-newsletter-on-vercel-with-ses/index.md",
 "disclaimer": "Deduped lists open-source repositories that belong to other people. We do not own, maintain, audit, or vouch for any of them, and a repo appearing here is not an endorsement or a safety check. The use cases, steps, and prompts are written by AI and may be incomplete, outdated, or just wrong. Where a use case is marked \"Seen in the wild\", we link to public posts where someone described something similar, but we have not verified those posts and the use case itself is still our AI's own write-up. Use all of this at your own risk. Only run code, commands, or agents on systems and accounts you are authorized to use, and read the code and every command before you run it, especially anything that touches credentials, files, or the network. Nothing here is professional, security, legal, or financial advice. All trademarks and project names belong to their respective owners, and their use here does not imply affiliation. Content is provided as is, without warranties of any kind. Found a mistake, a safety problem, or something you want removed? Email hello@dedupedai.com and we will look at it promptly.",
 "api": "https://dedupedai.com/api/v1/usecases/marclou-mailcheap--self-host-newsletter-on-vercel-with-ses.json",
 "api_version": "v1"
}
