stack / 02 — updated may 2026

Build an MVP for $50/mo

First-100-user budget. Ship in a weekend, validate before you pay for anything fancier. Auth, database, payments, email — all live, mostly on free tiers, with one paid line item where it actually matters.

$43 is the real number. Six of the seven line items are at their free tier or near it; the one that costs real money is payments, and that's because it has to.

cap$50/mo
actual$43/mo
updatedMay 2026
services7 · 3 free
stack.txt — receipts/mvp-50.mdmonthly
SERVICENOTESUSD
Vercel Hobbyhosting + edgefree
Turso starteredge database$9
Clerk freeauth + user managementfree
Resend freetransactional emailfree
Lemonsqueezypayments (merchant of record)$29
.com / 12domain registration$1
Better Stackuptime monitoring + alerts$4
SUBTOTAL · monthly7 services · 3 free tiers$43/mo
>cheapstack — runs in production. jump to setup →
why / the picks

Why this stack

Six of the seven line items are at their free tier or trivially close to it. The one that costs real money is payments, and that’s because it has to. Everything else is the cheapest version of itself that won’t embarrass you in front of an investor or a customer.

The thinking is constraint-first: at fewer than 100 users, you don’t need a connection pool, you don’t need session replay, you don’t need a managed Redis. You need a domain, a way for users to sign in, a database that doesn’t fall over, and a way to take their money. This stack does those four things and stops.

Lemonsqueezy is the deliberate splurge. Stripe is cheaper per transaction, but solo founders consistently underestimate how much time goes into VAT and sales-tax compliance once you have customers in five countries. The $29/mo and the higher per-transaction take rate are the price of someone else handling that paperwork — and at MVP volume, that math works.

The honest tradeoff: you have no error tracking, no analytics, and no edge cache. You will feel each of those gaps within a month of having real users. That’s the moment to graduate to the SaaS-$100 stack — not a moment before.

services / 7 picks

Per-service deep dives

01

Vercel Hobby

free Updated May 2026
What it does

Hosts the Next.js (or whatever-you-pick) app at the edge with preview URLs per branch.

Why we picked it

At MVP scale you're nowhere near the request limits. You get HTTPS, preview deploys, and a custom domain pointed at the build with one click. The push-to-deploy loop is the shortest in the stack and the price is zero.

Where it might bite you
  • Hobby's terms of service exclude commercial use. If a paying customer signs up next week, the honest move is Pro at $20/mo — that single bump pushes the stack toward $65.
  • There's no built-in cron at the Hobby tier. Schedule jobs from a free Upstash QStash account or a tiny GitHub Action.
  • Edge function logs are short-lived. If you need history, pipe to Better Stack or Axiom early — fishing through expired logs at 2am is a bad time.
02

Turso starter

$9/mo Updated May 2026
What it does

SQLite-on-the-edge. Your database lives next to the user, replicated to multiple regions automatically.

Why we picked it

$9 covers 9GB of storage and a billion row reads a month — vastly more than an MVP needs. It's a proper SQL database without the connection-pool nightmare you'd have with Postgres on serverless. The local-first tooling means you develop offline against a SQLite file and push to a cloud replica when you're ready.

Where it might bite you
  • It's SQLite, not Postgres. No JSONB, no PostGIS, no row-level security. If you'll need any of those within six months, start on Supabase instead.
  • Edge replication is great for reads, slower for writes. Anything write-heavy (analytics events, chat) belongs somewhere else.
  • The libSQL client has a smaller ecosystem than pg or mysql — fewer ORMs work cleanly. Drizzle is the safest bet today.
03

Clerk free

free Updated May 2026
What it does

Drop-in auth: email/password, Google, GitHub, magic links — with prebuilt UI components.

Why we picked it

Free up to 10,000 monthly active users, which is many MVPs' entire lifetime. The components are ugly but functional out of the box, and the React SDK reads from a hook so you stop writing session middleware. The thing you'd spend a weekend on is finished in twenty minutes.

Where it might bite you
  • 10k MAU is the cliff. The next plan is $25/mo and it's per-MAU after that — at scale Clerk gets expensive fast.
  • The UI components are easy to use and hard to customize. Past a certain polish target you'll either restyle aggressively or roll your own forms calling Clerk's API.
  • Custom domain for the auth screens (yourdomain.com/sign-in instead of clerk.yourdomain.com) is a Pro-tier feature.
04

Resend free

free Updated May 2026
What it does

Sends magic-link emails, password resets, receipts — the things that have to land.

Why we picked it

3,000 emails per month and 100 per day on the free tier covers an MVP's first six months. The React-email integration means email templates live next to the rest of the codebase instead of in a vendor's WYSIWYG. It's the same provider the SaaS-$100 stack uses paid; you just don't need to pay for it yet.

Where it might bite you
  • 100 emails per day is easy to hit on launch day. If you announce on Hacker News and 200 people sign up, half of them won't get a confirmation email until tomorrow.
  • SPF, DKIM, and DMARC still need to be set up correctly. Skipping the DNS work and Resend will deliver to spam, fairly.
  • There's no batch broadcast on the free tier — that's a paid feature. The MVP angle is transactional only; broadcast email belongs on Beehiiv.
05

Lemonsqueezy

$29/mo Updated May 2026
What it does

Accepts card payments and handles VAT, sales tax, and chargebacks as the merchant of record.

Why we picked it

Stripe is cheaper per-transaction, but Stripe makes you handle EU VAT, US sales tax, and the paperwork that comes with both. Lemonsqueezy is the merchant of record — they collect, file, and remit on your behalf, and you get a single 1099 from them. For a solo founder, the time saved is worth the 5%+50¢ they take. The flat $29/mo unlocks subscription management and webhooks.

Where it might bite you
  • Their fees (5% + 50¢) are visibly higher than Stripe's (2.9% + 30¢). Past ~$20k MRR the math flips and Stripe + a tax tool wins.
  • International coverage is good, not perfect. Some currencies (e.g., INR for Indian-only businesses) are still better served by Razorpay or Stripe.
  • Subscription management for customers happens on Lemonsqueezy's portal, not yours. You can deep-link, but the brand split is real.
06

.com / 12

$1/mo Updated May 2026
What it does

A .com or .dev or .io domain, registered for a year and amortized to ~$1/mo.

Why we picked it

Porkbun and Cloudflare Registrar both offer .com at registrar cost (~$10–12/year) with WHOIS privacy free. Don't pay GoDaddy $20 for the same domain. Keep DNS at the registrar — one fewer DNS provider to log into when something breaks.

Where it might bite you
  • Premium domains (short, English words) are a different price tier — sometimes $500–$10,000 upfront. Unless you have brand equity reasons, pick a name that's a regular registration price.
  • Renewal prices are sometimes higher than the first-year price. Check the renewal price, not just the promotional one, before you commit to a TLD.
  • Don't park your domain on a registrar's nameservers without TTL knowledge. Switching DNS later means waiting on cache expiry.
07

Better Stack

$4/mo Updated May 2026
What it does

Pings your endpoints every 30 seconds, pages you when they go down, and gives you a public status page.

Why we picked it

Free tier is generous — 10 monitors, 3-minute checks. The $4 paid tier drops to 30-second checks, adds SMS alerts, and gives you a custom-domain status page. At MVP scale, knowing the site is down before your users tell you is worth the four bucks.

Where it might bite you
  • Free-tier alerts are email-only. If your phone is on Do Not Disturb you'll find out in the morning. Pay the $4 for SMS the moment the site has paying users.
  • The default check interval (3 min on free) means a 90-second outage might not register at all.
  • Status pages are nice but adoption is low — most users won't check it. Pair it with a Twitter/X or email broadcast for actual outages.
setup / ~30 minutes

Setup in 30 minutes

All-in-one weekend if nothing surprises you. Do these in order — trying to wire payments before auth is a way to lose three hours.

  1. Register the domain and point DNS

    Buy the .com on Porkbun or Cloudflare Registrar. Add an A record pointing at Vercel later, but for now leave the domain parked at the registrar's nameservers.

  2. Bootstrap the Next.js app and push to Vercel

    npx create-next-app@latest with the App Router. Connect the repo to Vercel, add the custom domain, and confirm a marketing landing page is up before you write a line of business logic.

  3. Add Clerk auth

    npx @clerk/nextjs@latest init walks you through it. Wire the<SignIn />and <UserButton />components, set environment variables in Vercel, ship a /sign-in route. You’ll have working auth in under twenty minutes.

  4. Spin up Turso and connect with Drizzle

    Create a Turso database from the CLI, generate a token, and connect with @libsql/client wrapped in Drizzle ORM. Define schemas as TS files; migrations run on push.

  5. Wire Resend for transactional email

    Verify the sending domain (SPF, DKIM, DMARC), point Clerk's custom email at Resend, and template magic-link + password-reset emails using react-email. Test once with your own address — both delivered, both not in spam.

  6. Set up Lemonsqueezy products and webhooks

    Create products in Lemonsqueezy’s dashboard, generate checkout URLs, and add a webhook endpoint that listens for order_created and subscription_created. Mirror the LS customer ID into your Clerk user via metadata.

  7. Add Better Stack monitors

    Three monitors at minimum: the marketing site, the auth flow, the API health endpoint. Set the alert email to a real address you read; the $4 SMS upgrade is worth it the moment you take a paid customer.

thresholds / numeric

When this stack runs out

The point of an MVP stack is to outgrow it. Each line below is a real number; cross it and the stack is no longer your cheapest option.

10k MAU
Clerk free tier ends. Bumping to Pro is $25/mo and the first paid tier you'll hit. Worth it if your unit economics work.
3k emails/mo
Resend free tier ends. The $20 Pro tier covers 50k — that's a long runway to the next jump.
$20k MRR
Lemonsqueezy's 5%+50¢ becomes more expensive than Stripe + Stripe Tax. The migration is non-trivial but the math finally tips.
First paying customer
Vercel Hobby's no-commercial-use clause kicks in. Move to Pro at $20/mo the day money changes hands.
9GB Turso storage
Most apps won't see this for a year. If you do, $29 buys you 24GB on the next tier — or this is the moment to migrate to Postgres.
gotchas / from production

Common gotchas

Trip wires this combination loads. None of these will stop you shipping; all of them will cost you a Saturday if you don’t know about them.

  • AUTH

    Clerk's email rate limit on the free SMTP relay

    Free Clerk uses a shared SMTP and rate-limits to a few emails per hour per address. If sign-up emails seem flaky, configure custom SMTP through Resend before you debug Clerk.

  • DB

    Turso edge replication is async

    A write made in one region is visible in another after a beat. If your code reads-after-write across regions (rare in single-user MVP flows, but it happens), you'll see stale data. Use the primary URL for write-then-read paths.

  • PAYMENTS

    Lemonsqueezy webhook signing differs in test mode

    Test-mode webhooks are signed with a different secret than production. Keep the env var split per-environment or your local handler will silently reject every event.

  • DEPLOY

    Vercel preview env vars don't inherit by default

    Production secrets aren't shared with previews unless you explicitly enable them. If preview deploys need a real database connection, mark each env var for both Production and Preview.

  • EMAIL

    DKIM propagation takes hours

    Adding the DKIM TXT record at your registrar can take 1–4 hours to propagate. Resend will keep failing the verify check until it does. Don't refresh in a panic; come back after lunch.

  • DOMAIN

    Renewal price ≠ first-year price

    The cheap first-year .com renews at registrar cost, not the promo price. Some TLDs (.io, .dev) renew at noticeably higher rates. Auto-renew on, but eyes open at renewal time.