matt.blu

Stack

My vibe coding stack: what I build with Claude Code, and what it costs

The vibe coding tech stack behind my products: Claude Code, Fly.io, Neon, Better Auth, Cloudflare and Vercel. Why I picked each one, what it costs a month, and how I keep a vibe-coded app safe.

23 October 2026 · 8 min read

The short answer

My vibe coding stack is Claude Code on Opus 5.5 to write the code, one Turborepo with a NestJS API on Fly.io, Postgres on Neon, Better Auth for accounts, sites on Cloudflare and web apps on Vercel. It costs about $120 to $240 a month, nearly all of it Claude, and the repo checks Claude's work with written rules, lint and tests.

I build Parsly and REG, and a few experiments, in one repo with one backend behind them. I write almost none of the code by hand: Claude does. That only works if the tools around it are simple, and if the repo checks Claude’s work as hard as I would. Here’s everything I use, why, and what it costs.

I don’t want to manage servers, and I don’t want to spend my life in the AWS console. Every tool here earns its place by getting out of the way.

What does a vibe-coded app cost to run?

About $120 to $240, and nearly all of that is Claude. Everything else is on a free plan or close to it.

Tool What for Per month
Claude Max Writing the code, testing it, everything $100 or $200
1Password Accounts and secrets $5
GitHub Private repos, paid plan $4
GitHub Actions Checks and deploys $0, capped at $20
Fly.io The API about $5
Neon Postgres $0
Cloudflare Sites, DNS, domains $0, plus domains at cost
Vercel The web app $0, then $20
Sentry Errors $0
Mixpanel Funnels $0
Dub Short links $0
Lemon Squeezy Payments 5% + 50¢ a sale

Why not the usual vibe coding stack?

Ask Google for the best vibe coding stack and you get Cursor, Lovable or Bolt, Supabase and Vercel. They’re good tools, and Lovable is the fastest way I know to see an idea on screen. But once something has users, I want every part of it in my own repo, in plain TypeScript, where Claude can read it, change it and test it. So: Claude Code instead of an editor, my own API instead of a backend-in-a-box, and plain Postgres instead of a platform.

Building it

Claude

Claude is my favourite IDE and my favourite model. Opus 5.5 is the workhorse: an absolute beast that hardly ever gets anything wrong. Claude Code writes the code, the desktop app is where I work, and Claude in Chrome tests what it built. The Max plan pays for itself in a day.

What makes it work on a real codebase isn’t the model on its own. It’s the setup around it:

1Password

I have far too many accounts to manage any other way. The CLI keeps environment variables out of plain files, which matters when so many people are getting hacked. It also signs Claude into sites for me: I approve it in 1Password, the password goes straight into the page, and Claude never sees it.

GitHub and GitHub Actions

Private repos on a paid plan. Actions is the whole pipeline: merge to main and whatever changed goes live, and nothing else. No dashboard is linked to the repo, so nothing deploys twice and nothing deploys by surprise.

You get a pile of free minutes. I burned through them with 11 days of the month left, mostly re-checking pull requests on every push. Now pull requests start as drafts and skip the checks until they’re ready, a newer push cancels the older run, and spending is capped at $20.

Hosting it

Fly.io

So simple. A Dockerfile and a config file, and the API runs in London. No infrastructure to manage. Database migrations run before each release, and if one fails, the old version keeps serving. One machine always stays on, so the first visitor after a quiet spell doesn’t wait. The development copy is allowed to sleep.

Neon

I love Postgres, and Neon is Postgres with nothing to run. The free plan covers me for now, and branches give me a development copy to break.

One gotcha: Fly checks the API is alive every 30 seconds, and my health check asked the database too, so Neon never got to sleep and ate the month’s free compute. Now there’s a second check that doesn’t touch the database.

Cloudflare

Static sites are the bomb: free, fast, everywhere. Cloudflare also does my DNS, counts visits without cookies, and is where I buy domains, at cost. Each product has one config file that sets the whole lot up from the terminal, so I never click around a dashboard.

Vercel

The obvious home for Next.js. Nobody else competes. It’s free while the web app is a placeholder, and $20 a month on Pro before it takes money, because the free plan doesn’t allow commercial use. Every pull request gets its own preview link.

Knowing it works

Sentry and Mixpanel

The bare minimum. Sentry tells me if the app is working, and Mixpanel tells me if the funnel is. Both are free at my size.

Dub

You want to know what works where. Every post I share gets its own short link on Parsly’s domain, tagged with where it was posted, so I can follow a click through to an install.

Lemon Squeezy

I don’t want to mess around with raw Stripe. Lemon Squeezy is the merchant of record, so sales tax and invoices are their problem, not mine. 5% + 50¢ a sale is worth it.

The code

The frameworks are boring on purpose. Each one is here because it makes Claude’s job easier, not because it’s new.

Turborepo and pnpm

I want the whole pipeline in one place: every product, the API, the shared UI, the graphics, the videos, Claude’s skills and the research behind it all. Turborepo runs only what changed and stops one product importing another’s code. pnpm pins one version of each shared library, so nothing drifts.

NestJS

Not the hottest framework. But vibe-coded apps get messy fast, and Nest’s modules and strong conventions help a model make good decisions. Each product plugs its own module into one shared API, and the core never needs to know about it.

Drizzle

The right level between raw SQL and a heavy ORM: typed, close to the bare metal, nothing magic. Schema changes only go through migrations, and each one has to work with the old version still running, because merging goes straight to production.

Better Auth

I don’t want my users managed by a sign-in provider outside my app. I should own auth, and Better Auth makes that easy: email and password, Google sign-in, and the sign-in Claude uses to connect to Parsly, all in my own database.

Astro, Next.js and WXT

Astro for the sites, because static pages are great for search. Next.js for the web app. WXT for the Chrome extension, with hot reload, so a change shows up without reinstalling.

React, Tailwind and shadcn/ui

You can spin up an app in minutes. The shared components carry no colours or fonts of their own; each product brings its own brand, so a new product looks like itself on day one.

Zod

A lifesaver. Every request and response has one schema, shared by the API and the UI, so the contract between them can’t quietly drift.

Vitest and Playwright

Vitest because Jest kind of sucks. Playwright for confidence that things work end to end: it loads the real extension against fake copies of the sites it reads.

Remotion

Graphics and videos written in React, in the same repo, in the same brand. The Web Store images and the promo shorts are rendered, not designed by hand.

How do you keep a vibe-coded app safe?

Code written by AI drifts. It copies instead of sharing, grows huge files, and forgets yesterday’s rules. So the repo checks itself:

Skills you can copy

Skills are what turn Claude from clever into consistent. These ones are public:

The rest are private because they’re about this repo: one runs the checklists, one reviews React code, one gets Sentry to zero open issues. Writing your own is the best hour you’ll spend: every time you explain the same thing to Claude twice, make it a skill.

Is it worth it?

One subscription to the model that writes the code, and a handful of free plans around it. No servers to patch, no AWS console, no Stripe webhooks to babysit. The money goes on Claude, and the time goes on the products.

If you want to see what this stack has built: REG is a free Claude Code plugin that maps how any company gets its customers, and Parsly shows why a creator blew up and what to post next.

Questions people ask

What's the best tech stack for vibe coding?

One with strong conventions and as little to run as possible. Mine is Claude Code, TypeScript everywhere, NestJS, Drizzle and Postgres on Neon, Better Auth, Astro and Next.js, hosted on Fly.io, Cloudflare and Vercel. The bigger win than any one tool is a repo that tells the model its rules and checks its work.

Is Claude Max worth it for vibe coding?

For me, yes. It's the one tool doing most of the work, and on Max I don't ration it. If you code a few hours a week, Pro at $20 is the place to start.

Should I use Neon or Supabase?

Supabase gives you a database, sign-in, storage and an API in one. Neon is just Postgres, with branches and a free plan. I use Neon because I want accounts and the API in my own code, where Claude can read and test them.

Drizzle or Prisma?

Drizzle. It's typed SQL with very little magic, so what Claude writes is what runs. Prisma is fine too; it hides more.

Better Auth or Clerk?

Clerk is quicker to start and keeps your users on its servers. Better Auth keeps them in your own database, and costs nothing. I'd rather own my users.

Claude Code or Cursor?

Claude Code. It runs in the terminal and the desktop app, runs the tests itself, and follows the repo's own guides and hooks. Cursor is great if you want to stay inside an editor and watch every line.

Sources

Prices checked on 23 October 2026.

More from the blog