# How to Vibe Code Your Own Buttondown (and Stop Paying for It)

> Newsletter software for people like you

- Site: https://buttondown.com
- Category: Web app
- Platforms: Web app
- Verdict: **Solid side project** (68/100 vibecodeable)
- Estimated effort: 2-4 weeks of focused development

## Verdict

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.

### What you can't replicate

- Years of accumulated sender reputation across major mailbox providers (Gmail, Outlook, Yahoo)
- Instant concierge migration support for large lists

## What it 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 Tiers: Usage-based

### Funding

$0 raised.

Founded 2017.
Team size: Half a dozen.

## The hard parts

- 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 vibe code Buttondown

### Prerequisites

- Node.js (free): Runtime environment for Next.js and TypeScript tooling.
- GitHub (free): Source code repository and deployment pipeline integration.
- Resend or Amazon SES Account (free tier / pay-as-you-go): Transactional and broadcast email sending infrastructure.

### Recommended AI tools

- Claude Code: Agentic coding tool capable of scaffolding the full-stack database schemas, API routes, and editor components.
- Cursor: AI code editor for refining the Markdown editor interface and dashboard views.

### 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

### Hosting

- Vercel (Next.js frontend and serverless API deployment): $0-20/mo
- Turso (Serverless SQLite database for subscribers and broadcasts): $0/mo

### Build guide

1. **Project 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.
```

2. **Markdown 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.
```

3. **Subscriber 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.
```

4. **Email 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.
```

5. **Public 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.
```

6. **REST 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

**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 the SaaS instead: ~$15-50/mo depending on subscriber count
- Build time: 35-50 hours
- AI tool credits: $20 (one month of Claude Pro / Cursor)
- Break-even: Fun/learning project (free vs paid SaaS)

## Sources

- [Buttondown Official Website & Documentation](https://buttondown.com)
- [Buttondown Pricing and Features](https://buttondown.com/pricing)