[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f82v59uca0jkb":3},{"code":4,"message":5,"data":6,"timestamp":45},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":22,"summary_md":23,"topic":24,"github_topics":27,"license":41,"homepage":42,"updated_at":43,"history":44},"marclou\u002Fmailcheap",9,"Newsletters where you pay for the emails you send, not for dormant subscribers, at a fraction of the price of beehiiv and the like. Open source: self-host it, or use mailcheap.ai.","JavaScript",1391,364,98,14,[16],{"id":17,"title":18,"points":19,"comments":20,"posted_at":21},50033695,"MailCheap: Self-hosted newsletters on Amazon SES. About $0.10 per 1k emails",2,0,"2026-10-10","Open-source newsletter app that bills per email sent, not per subscriber, for writers leaving beehiiv or Substack.","A self-hostable newsletter app whose cost model follows emails sent rather than list size. Worth a serious look if you already have sending infrastructure and want the whole stack under your control; not worth it if you want someone else to handle deliverability.\n\n## The problem\n\nA writer with a list of 10,000 readers pays a platform for all of them, even when most haven't opened an issue in months. Moving away means either rebuilding the archive, signup forms and import statuses by hand, or accepting a new per-subscriber bill. MailCheap changes that step: it imports CSV exports from beehiiv, Substack, Mailchimp and several others as they are, keeping each reader's status and signup date, then sends through your own Amazon SES or PostShiba account. The result is an issue that can be written, reviewed, sent, published as a web page and pushed to social, with per-email pricing at the provider instead of per-subscriber pricing at a platform.\n\n## What's different\n\nThe mechanism is deliberately thin. Every dashboard action also exists as an MCP tool and a REST API call with the same checks and limits, so an AI agent can draft, review and trigger a send. MCP marks sending as an action that cannot be undone, so the agent asks before it goes out. A website ships with each newsletter: a free `\u003Cslug>.mailcheap.ai` subdomain in the cloud version, or `\u002Farchive\u002F\u003Cslug>` on your own server, with crawlable issue pages, a signup form and a sitemap.\n\nDeliverability is where the design shows its trade-off. MailCheap creates a separate provider tenant per account with its own domains, suppression list and pause switch, and it walks you through DKIM, return path and DMARC and checks each record. That is real work transferred from a platform to you: a broken DNS record or a misconfigured provider event is your problem now, not a support ticket. The pre-send review checks subject, preview text, unsubscribe link, Gmail's 100 KB clipping limit, postal address and sender, which catches common mistakes but does not make the list itself clean.\n\n## Who should try it\n\nGood fit: a technically comfortable writer who already sends with Amazon SES or is willing to learn it, wants the archive and signup pages on their own domain, and would rather pay $0.10–0.16 per 1,000 emails than a monthly subscriber-tier fee. Self-hosting also allows multiple accounts on one server, with each person limited to 3 newsletters and no billing.\n\nPoor fit: anyone whose main reason for leaving a platform is to stop thinking about email infrastructure. The cloud version exists precisely for that path, and its plan limits (emails per month and active subscribers) are the thing to read before migrating. Solo writers who only need a simple occasional send may find a hosted service cheaper in time.\n\n## Requirements and limitations\n\nSelf-hosting requires Node.js 22 or later, a MongoDB database, a host such as Vercel and Upstash QStash for background sending and scheduling (one QStash message sends 50 emails), plus an SES or PostShiba sending account. SES accounts start in a sandbox with 200 emails a day to verified recipients until AWS grants production access, and the README recommends a separate AWS account because reputation and limits are per account. PostShiba is invite-only for now, so SES is the realistic self-hosted path.\n\nTwo secrets must be handled with care. `BETTER_AUTH_SECRET` signs sessions and links in already-sent emails: rotating it signs everyone out and breaks those links. `SUPPRESSION_HASH_KEY` keys the shared never-email list and must be a different value; changing it empties the list. Sign-in is restricted to the addresses and domains in `ADMIN_EMAILS` and `ALLOWED_EMAILS`; with both empty, nobody can sign in. The AGPL-3.0 license requires offering source to users if you run a modified version for other people. Setup instructions are in the [project README](https:\u002F\u002Fgithub.com\u002Fmarclou\u002Fmailcheap) and [API docs](https:\u002F\u002Fmailcheap.ai\u002Fdocs).\n\n## HotRepo's take\n\nHotRepo first recorded this repository on 2026-10-24, 14 days after creation, when it had 1,391 total stars and ranked #9 on the NEW-REPOSITORY board for JavaScript — a young-repo snapshot, not a daily growth figure. There is no comparable daily-board history, so persistence cannot yet be judged from HotRepo signals. Before committing a list, verify the SES production-access path and the provider-event setup the README defers to \"once.\"",{"slug":25,"name":26},"productivity","Productivity & Utilities",[28,29,30,31,32,33,34,35,36,37,38,39,40],"ai-agents","amazon-ses","beehiiv-alternative","email","email-marketing","mailchimp-alternative","mcp","mcp-server","mongodb","newsletter","nextjs","self-hosted","substack-alternative","AGPL-3.0","https:\u002F\u002Fmailcheap.ai","2026-10-25T03:29:16Z",[],1792906233]