Stack
Stack
The tools, services, and open-source software that power Buttondown.
No team can do it alone. Here's every tool, service, and open-source project that powers Buttondown — and what we give back.
Open Source
Buttondown, like all software companies, sits on the shoulders of giants. We're committed to donating 10% of all profits to open source technologies that power our software, and we're proud members of FOSS Funders and signatories of the Open Source Pledge.
We also maintain a number of our own open-source packages, born out of needs we encountered building Buttondown and released for the community to use and contribute to.
AllBy categoryBy license
$96,258 / yr · 54 tools
AWS$1,700](https://aws.amazon.com/) Postmark$1,670](https://postmark.com/) Planetscale$1,000](https://planetscale.com/) Plain$615](https://www.plain.com/) Mailgun$485](https://mailgun.com/) Django$417](https://www.djangoproject.com/) Anthropic$350](https://www.anthropic.com/) Sentry$200](https://sentry.io/) Cloudflare$200](https://cloudflare.com/) Linear$195](https://linear.app/) Google Suite$175](https://google.com/) Tuple$150](https://tuple.app/) DigitalOcean$150](https://www.digitalocean.com/) Gusto$130](https://gusto.com/) Python$83](https://www.python.org/) Vue$83](https://vuejs.org/) Slack$75](https://slack.com/) incident.io$70](/content/stack/incident-io/index.html) Pulumi$65](https://www.pulumi.com/) Vercel$60](https://vercel.com/) 1Password$25](https://1password.com/) Allauth$21](https://allauth.org/) Homebrew$21](https://brew.sh/) Structlog$21](https://www.structlog.org/en/stable/) Twitter$20](https://twitter.com/) Buffer$18](https://buffer.com/) ClickHouse$11](https://clickhouse.com/) disposable-email-domains$10](https://github.com/disposable-email-domains/disposable-email-domains) Mise$2](https://mise.jdx.dev/) Stripe—](https://stripe.com/) Spamhaus$0](https://www.spamhaus.org/) GitHub$0](https://github.com/) Tiptap$0](https://tiptap.dev/) Postico$0](https://eggerapps.at/postico2/) Google Web Risk API$0](https://cloud.google.com/web-risk) PayPal$0](https://paypal.com/) Mercury$0](https://mercury.com/r/buttondown) Bunny$0](https://bunny.net/dns/) Project Honeypot$0](https://www.projecthoneypot.org/) Unsplash$0](https://unsplash.com/) Biome$0](https://biomejs.dev/) CodeMirror$0](https://codemirror.net/) Cspell$0](https://cspell.org/) Django Ninja$0](https://django-ninja.rest-framework.com/) ESLint$0](https://eslint.org/) NextJS$0](https://nextjs.org/) Radix UI$0](https://www.radix-ui.com/) Postgres$0](https://www.postgresql.org/) Pytest$0](https://docs.pytest.org/en/7.4.x/) Ruff$0](https://github.com/astral-sh/ruff) Tailwind$0](https://tailwindcss.com/) Typescript$0](https://www.typescriptlang.org/) Vite$0](https://vitejs.dev/) vite-plugin-magical-svg$0](https://github.com/cyyynthia/vite-plugin-magical-svg/)
Our open source
9 tools
tiptap-footnotes★ 62](https://github.com/buttondown/tiptap-footnotes) rssrssrssrss★ 47](https://github.com/buttondown/rssrssrssrss) django-typescript-routes★ 33](https://github.com/buttondown/django-typescript-routes) tiptap-math★ 25](https://github.com/buttondown/tiptap-math) sniperlink★ 12](https://github.com/buttondown/sniper-link) share.bingo★ 11](https://github.com/buttondown/share.bingo) django-rq-cron★ 9](https://github.com/buttondown/django-rq-cron) disposables.app★ 3](https://github.com/buttondown/disposables.app) caltorss](https://github.com/buttondown/caltorss)
Frequently asked questions
Why do you use so many services?
The most important resource I have is my energy, and being able to trade X dollars (where X is any number less than a hundred) for even trivial amounts of energy is an absolute no-brainer.
Why so many ESPs?
When I launched Buttondown, AWS Simple Email Service was notoriously low-quality and Postmark did not support broadcast emails. Mailgun was the choice I went with, and there are still many customers using Mailgun's rails who have custom domain records set up that I don't have the heart (or incentive) to migrate.
I like having redundancy — if one provider were to go down or drastically change rates it would be trivial for me to migrate — but if I were starting Buttondown from scratch I would likely just have everything run through Postmark.
Why don't you use something for X?
Some specific choices I made to roll my own:
- Auth: I know it's increasingly trendy to outsource auth to a paid vendor but I'm not a fan of the lock-in and I like having full control over the experience.
- Feature flags: rolled my own for performance reasons. Plan on open sourcing it at some point.
Addenda
- In addition to the open-source commitments listed above, we donate $250/year to Adam Johnson, whose projects are too granular and numerous to list individually.
- Stripe's cost is redacted because it scales with revenue and would be tantamount to disclosing our financials.
Changelog
| Date | Change |
|---|---|
| 2026-10-21 | Replaced Heroku with AWS ($1,700/mo). |
| 2026-10-21 | Updated costs to match our latest bills: Postmark ($1,670), Mailgun ($485), Plain ($615), Anthropic ($350), Cloudflare ($200), Sentry ($200), Linear ($195), Google Suite ($175), DigitalOcean ($150), Tuple ($150), Slack ($75), incident.io ($70), Pulumi ($65), Vercel ($60), 1Password ($25), and ClickHouse ($11). |
| 2026-10-12 | Moved local development from mprocs to dekit, its successor from the same author. |
| 2026-10-09 | Stopped using Seline; website analytics now run on Cortado, our own in-house tool. |
| 2026-10-05 | Stopped using Octolens; social media mention monitoring now runs off our own crawlers. |
| 2026-09-23 | Stopped using Kolo for Django request tracing. |
| 2026-09-14 | Removed SparkPost, which rolled into Postmark. Replaced Cursor and OpenAI with Anthropic. |
| 2026-09-11 | Seline went from $34 to $59/mo. |
| 2026-09-08 | Dropped HAProxy, Localias, and Overmind; local development now runs on mprocs and Portless, and edge routing runs on our own Cloudflare Worker. Also ended our paid Spamhaus subscription — we still use the free public blocklists. |
| 2026-09-07 | Dropped our team CleanShot subscription; screenshot hosting now runs off our own internal-files tooling. |
| 2026-09-05 | Removed Proximo, which we no longer used. |
| 2026-08-26 | Stopped using Cleantalk for signup spam detection. |
| 2026-07-01 | Planetscale went from $1,400 to $1,000/mo. |
| 2026-06-19 | Removed UptimeRobot — TLS monitoring now run off our in-house checker framework. |
| 2026-06-18 | Stopped using StopForumSpam for spam detection. |
| 2026-06-12 | Added ClickHouse ($5/mo) for archival storage. |
| 2026-06-05 | Added UptimeRobot (Solo plan) for uptime monitoring. |
| 2026-06-05 | Sentry went from $100 to $250/mo. |
| 2026-06-04 | Pruned tools we no longer use: GitHub Actions, Hetzner, Mono Lisa, Things, and Timing. |
| 2026-06-02 | Removed Goto — still a great tool, but we've replaced it with individual usage. Also dropped Sender Score, which never gave us useful feedback. |
| 2026-05-22 | Removed Redis Enterprise Cloud; caching and rate limiting now run off Postgres. |
| 2026-05-17 | Moved Pulumi Cloud back to a paid plan ($40/mo). |
| 2026-05-14 | Stopped using Blacksmith for CI; moved all GitHub Actions workflows to self-hosted runners. |
| 2026-04-15 | Removed Sendgrid ($40/mo). |
| 2026-04-05 | Added Goto for go links (free). |
| 2026-04-03 | Added Proximo ($5/mo) for outbound HTTP proxying. |
| 2026-04-02 | Mailgun went from $20 to $600/mo. |
| 2026-03-30 | Cut Vercel from $240 to $40/mo. |
| 2026-03-29 | Gusto dropped from $200 to $130/mo. Tuple, Cleantalk, and Seline went up to $120, $70, and $34/mo. |
| 2026-03-26 | Cut Heroku from $2,100 to $1,200/mo, Blacksmith from $275 to $125/mo, Sentry from $185 to $100/mo, and Redis Enterprise Cloud from $250 to $25/mo. |
| 2026-03-25 | Stopped using Obsidian; internal docs now run on our own viewer app. |
| 2026-03-21 | Removed Anymail in favor of bespoke SMTP backends. We've moved sufficiently far away from it that it no longer makes sense, but we'd still recommend it. |
| 2026-03-21 | Added disposable-email-domains to the stack; donating $10/mo. |
| 2026-03-21 | Added Timing ($14/mo) for time tracking. |
| 2026-03-19 | Churned from S3 in favor of Cloudflare R2. |
| 2026-03-18 | Churned from Better Stack in favor of using Sentry's logging + uptime monitoring. |
| 2026-03-04 | Downgraded Pulumi Cloud from paid to free tier. |
| 2026-03-01 | Churned from Better Stack to incident.io for incident management. |
| 2026-02-20 | Stopped using Tailscale. Great service, we just didn't need it. |
| 2026-02-16 | Stopped using HEX for data notebooks. |
| 2026-02-13 | Added Obsidian for internal documentation. |
| 2026-01-31 | Stopped using DNSimple for DNS management. |
| 2026-01-25 | Stopped using ImprovMX for email forwarding. |
| 2026-01-22 | Migrated from Amazon RDS to Planetscale. Removed Iframely and Granola. |
| 2025-12-26 | Replaced Vista Social with Buffer for social media management. |
| 2025-12-23 | Replaced Vercel Analytics with Seline for website analytics. |
| 2025-12-19 | Added StopForumSpam for spam detection (free!). |
| 2025-12-08 | Published our year-end stack roundup. |
| 2025-12-04 | Removed Vista Social, Quickbooks, and Valtown from the stack. |
| 2025-12-01 | Stopped using Mimestream for email. |
| 2025-11-24 | Stopped using Groove for customer support. |
| 2025-11-01 | Added Pulumi for infrastructure as code. |
| 2025-10-21 | Added Have I Been Pwned for breach detection (removed 2026-04). |
| 2025-08-01 | Added Bunny (DNS), CleanShot (screenshots), Granola (notetaking), and Sendgrid (SMTP) over the summer. |
| 2025-05-14 | Started using Vista Social to manage social media accounts and Tailscale to manage the server storing internal docs. Stopped using Trotto (in favor of Tailscale's own OSS version). |
| 2025-04-01 | Replaced Depot with Blacksmith (faster, cheaper) |
| 2025-01-09 | So much stuff we had to write a whole blog post about it! |
| 2024-07-10 | Started using Depot to speed up GitHub Actions |
| 2024-07-09 | Started using Fivetran and Metabase to analyze data and construct a (janky, but useful!) WBR |
| 2024-04-03 | Started using Mercury as a banking solution |
| 2024-03-28 | Added Pika, Cloudflare, and a handful of other tools; churned from Texts, Sketch, Bear, and Imgix. |
| 2024-03-14 | Added Audiogest to the stack. It's a nice little tool! |
| 2023-10-13 | Had to bump up my Imgix plan from $75 to $200/mo because of traffic. Time to find something cheaper! |
| 2023-08-22 | Added val.town |
| 2023-08-01 | Add PopSQL (which technically I've been using for a while but forgot about) |
| 2023-07-25 | Migrated off of Heroku Redis and onto Redis Enterprise Cloud, which means saving $70/mo for five minutes of switching environment variables. |
| 2023-07-24 | Onboarded to Calibre. |
| 2023-07-23 | Purchased a reserved instance for my big ol' RDS database, saving $110/mo. |
| 2023-07-20 | Initial launch of this page. |
Buttondown is the last email platform you’ll switch to.