The verdict: can you vibe code Buttondown?
Build a personal subset for yourself, but keep paying if you need bulletproof deliverability and inbox placement at scale.
Building the core loop—a Markdown editor, subscriber CRUD, and basic sending via an API like Amazon SES or Resend—is straightforward with AI coding tools. However, you will inevitably hit the unglamorous wall of email deliverability: handling bounce feedback loops, managing spam complaints, configuring strict DNS records, and keeping your IP/domain off ISP blacklists. If you just want to publish your personal blog via email, a weekend build works great; if you want a robust commercial ESP, you will spend weeks fighting edge cases in SMTP protocols.
Estimated effort: 2-4 weeks of focused development
What you can't replicate
- Years of accumulated sender reputation across major mailbox providers (Gmail, Outlook, Yahoo)
- Instant concierge migration support for large lists
Founded
2017
Raised
$0
Team
Half a dozen
Cheapest paid tier
$0
What Buttondown does
Lightweight, developer-friendly email newsletter and publishing platform designed as an alternative to heavy marketing suites.
Core features
- Markdown and rich-text newsletter editor
- Subscriber list management with custom tags and segmentation
- Broadcast email delivery pipeline with rate limiting
- Automated welcome sequences and trigger-based emails
- Stripe integration for paid recurring subscriptions with 0% platform cut
- Hosted newsletter archives on custom domains
- Comprehensive REST API for programmatic newsletter management
- Privacy-first tracking and basic analytics dashboard
The business
Pricing
- Free$0
- Paid TiersUsage-based
Funding
$0
Pay vs build, cumulative
Break-even at month 1 — after that, every month is money kept.
The hard parts of vibe coding Buttondown
- Inbox deliverability and sender reputation management (DNS, SPF, DKIM, DMARC, feedback loops)
- High-throughput asynchronous background queuing for email blasting without tripping spam filters
- Fault-tolerant webhook processing for Stripe subscription billing syncs and failures
- Bounce, complaint, and unsubscribe processing pipelines via inbound email webhooks
How to vibecode Buttondown
Prerequisites
Node.jsfree
Runtime environment for Next.js and TypeScript tooling.
GitHubfree
Source code repository and deployment pipeline integration.
Resend or Amazon SES Accountfree tier / pay-as-you-go
Transactional and broadcast email sending infrastructure.
AI coding tools
Recommended stack
| Frontend | Next.js with Tailwind CSS and a Markdown editor component (e.g., TipTap or Milkdown) |
|---|---|
| Backend | Next.js Server Actions and API Routes |
| Database | Turso (SQLite at the edge for relational subscriber and newsletter storage) |
| Auth | better-auth |
| Payments | Stripe (optional for paid tiers) |
| Other | Resend for email delivery, Inngest for background email queue processing |
Build guide
01Project Scaffolding & Database Schema
Initialize the Next.js project with Tailwind CSS, configure better-auth, and set up the Turso database schema for users, newsletters, subscribers, and tags.
Create a new Next.js project configured with TypeScript, Tailwind CSS, and Drizzle ORM connected to Turso. Define the database schema with tables for users, subscribers (email, status, subscribed_at, metadata), newsletters (id, subject, body_markdown, body_html, status, sent_at), and tags. Implement better-auth for secure admin authentication. Ensure all relational constraints and foreign keys are properly structured.02Markdown Editor & Newsletter Composer
Build the newsletter drafting interface featuring a split-pane Markdown editor and live HTML preview.
Build a newsletter composition dashboard in Next.js using a modern Markdown editor library (like Milkdown or TipTap). Create a split-pane view with raw Markdown editing on one side and a live rendered HTML preview on the other. Add form fields for subject line, preview text, and scheduling options. Implement server actions to save drafts and update newsletter records in the Turso database.03Subscriber Management & Import
Build the subscriber list interface supporting manual entry and CSV bulk import.
Develop a subscriber management screen displaying paginated subscriber lists, status badges (active, unsubscribed, bounced), and tag filters. Build a CSV import utility that parses uploaded files on the server side, validates email syntax, handles duplicate entries gracefully, and bulk-inserts records into the database with progress feedback.04Email Broadcasting & Background Queuing
Implement the sending engine using Resend and Inngest for reliable background batch processing.
Implement an email broadcasting engine using Inngest for background job processing and Resend for delivery. When a newsletter is marked as 'sent', trigger a durable background function that fetches active subscribers in batches, converts Markdown content to sanitized HTML, and dispatches transactional emails through Resend while respecting rate limits. Log delivery statuses and handle failed sends cleanly.05Public Archives & RSS Feed
Create public-facing hosted newsletter archives and an RSS feed endpoint.
Build public archive pages at `/archive` and `/archive/[id]` that render sent newsletters cleanly with custom branding styles. Implement an RSS XML feed endpoint at `/feed.xml` that automatically lists published newsletters for feed readers.06REST API Integration
Expose a secure REST API mirroring core platform functionality for programmatic access.
Create a fully-featured REST API under `/api/v1/` protected by bearer token authentication. Implement endpoints for listing subscribers, creating new subscribers, fetching newsletters, and triggering broadcasts programmatically. Document the endpoints with an OpenAPI schema route.
Cost vs paying for Buttondown
What will you build it with?
Starting total with Claude Code$0 one-time
Starting costs (one-time)
- Custom domain (optional)$12/yr
- AI coding credits$20
Total~$32 one-time
Ongoing costs (monthly)
- Vercel Hobby / Turso / Resend free tiers$0/mo
Total$0/mo
Paying for Buttondown
~$15-50/mo depending on subscriber count
Your time to build
35-50 hours
AI tool credits
$20 (one month of Claude Pro / Cursor)
Break-even
Fun/learning project (free vs paid SaaS)
Vibe code Buttondown: FAQ
- Can you vibe code Buttondown yourself?
- Solid side project — 68/100 vibecodeable. Build a personal subset for yourself, but keep paying if you need bulletproof deliverability and inbox placement at scale.
- How long does it take to vibe code Buttondown?
- 2-4 weeks of focused development — roughly 35-50 hours of hands-on time with an AI coding agent.
- How do you build your own Buttondown?
- Scoped to personal use: Next.js with Tailwind CSS and a Markdown editor component (e.g., TipTap or Milkdown) on the front, Next.js Server Actions and API Routes behind it, Turso (SQLite at the edge for relational subscriber and newsletter storage) for data. Follow the 6-step build guide on this page — each step has a paste-ready prompt for an AI coding agent.
- How do you code your own Buttondown without being an expert?
- Use an AI coding tool (Claude Code or Cursor) and work in small steps: scaffold, data model, core screens, then deploy. Realistic effort: 2-4 weeks of focused development. The prompts on this page are written so the AI does the heavy lifting.
- How much does it cost to vibe code Buttondown instead of paying?
- About ~$32 one-time to start and $0/mo to run, versus ~$15-50/mo depending on subscriber count for Buttondown. Break-even: Fun/learning project (free vs paid SaaS).
- What stack should you use to vibe code Buttondown?
- Next.js with Tailwind CSS and a Markdown editor component (e.g., TipTap or Milkdown); Next.js Server Actions and API Routes; Turso (SQLite at the edge for relational subscriber and newsletter storage); plus Resend for email delivery, Inngest for background email queue processing.