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:
- A guide in every folder. An
AGENTS.mdat the root and one per product, saying where things live and what the rules are. Claude reads the one for the folder it’s in. - Skills for the jobs I repeat: reviewing React code, running the checklists, getting Sentry to zero open issues, filing research.
- Hooks that fire when Claude finishes: one asks for the day’s work note, one asks for the checklists if covered code changed.
- Its own test browser. Claude drives a dedicated Chrome, one per product, never mine.
- Current docs. Claude looks up each library’s docs as they are today instead of guessing from memory.
- Memory. Decisions that aren’t in the code (pricing, what’s parked, how I like things explained) carry over between sessions.
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:
- Written rules. Checklists for the API, React, analytics and logging, each rule with an ID. Claude audits every change against them before it’s done.
- Lint that bites. Copied code fails the build. Components over 220 lines fail lint and get split up.
- Walls between products. One product can’t import another’s code; the build refuses.
- Extensions ask first. No access to any site until you allow that site. A build that asks for more is refused.
- Secrets never in git. Tokens are scoped to one app and piped straight into GitHub, never shown on screen.
- Errors I’ll hear about. Every failure is logged and lands in Sentry, with an alert when something is broken for everyone. Nothing personal goes in the logs.
- A README for every feature, saying what it does for you and how it works, updated in the same change.
- A human merges. Claude opens a draft pull request. I read it and merge it. Merging is the release; Claude never ships to production on its own.
Skills you can copy
Skills are what turn Claude from clever into consistent. These ones are public:
- Turborepo’s skill, from Vercel: points Claude at the docs that ship with the version you’ve installed.
- Remotion’s skills: how to write, caption and render videos in React.
- Chrome extensions, from Google Chrome: Manifest V3 the right way, and getting through Web Store review.
- REG, mine: ask Claude how any company gets its customers and get its whole funnel back, with the evidence.
- Parsly’s plugin, mine: ask Claude why a YouTube channel’s breakout videos worked, how the top channels in a niche open their videos, and what to make next.
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.