[{"data":1,"prerenderedAt":1668},["ShallowReactive",2],{"blog-vibe-coding-tool-honest-comparison":3,"related-vibe-coding-tool-honest-comparison":517},{"id":4,"title":5,"author":6,"body":7,"category":6,"date":502,"description":503,"draft":504,"extension":505,"image":6,"meta":506,"navigation":507,"path":508,"seo":509,"stem":510,"tags":511,"__hash__":516},"blog\u002Fblog\u002Fvibe-coding-tool-honest-comparison.md","Vibe Coding Tools: The Honest Comparison & Hidden Gaps",null,{"type":8,"value":9,"toc":471},"minimark",[10,14,19,24,27,31,55,59,67,71,77,83,89,95,101,105,109,124,128,137,141,152,156,163,167,170,210,214,220,226,235,241,245,249,252,256,265,269,278,282,295,304,307,311,350,354,360,366,372,378,384,388,397,400,404,442,446,461,465,468],[11,12,13],"p",{},"Every ranking of \"vibe coding tools\" tells you the same thing: describe your app in plain English, watch a UI appear, ship in minutes. That story is real for the first screen. It falls apart the moment your app needs to take money, protect user data, or send an email that arrives exactly once. This guide covers the tools honestly — and names the gap that none of the comparisons mention.",[15,16,18],"h2",{"id":17},"what-is-vibe-coding-and-what-it-actually-means","What Is Vibe Coding (And What It Actually Means)",[20,21,23],"h3",{"id":22},"natural-language-to-shipped-product","Natural Language to Shipped Product",[11,25,26],{},"Vibe coding is intent-driven development: you describe what you want, and an AI turns it into working code. The term, popularized by Andrej Karpathy in early 2025, captured a real shift — you steer with language instead of typing every line. But \"vibe\" implies the hard part is UI generation. It isn't.",[20,28,30],{"id":29},"the-spectrum-from-ide-copilots-to-full-stack-generators","The Spectrum: From IDE Copilots to Full-Stack Generators",[11,32,33,34,38,39,42,43,46,47,50,51,54],{},"The tools sit on a spectrum. On one end, IDE copilots like ",[35,36,37],"strong",{},"Cursor"," and ",[35,40,41],{},"Windsurf"," accelerate a developer who still owns the architecture. On the other, full-stack generators like ",[35,44,45],{},"Lovable",", ",[35,48,49],{},"Bolt.new",", and ",[35,52,53],{},"Replit"," produce a running app from a prompt. Base44 and Emergent occupy the middle, optimized for rapid prototypes. VS Code + Copilot is the cheap baseline. Vibecode and Knack target non-developers.",[20,56,58],{"id":57},"why-vibe-misses-the-point","Why \"Vibe\" Misses the Point",[11,60,61,62,66],{},"The real differentiator isn't how nicely a tool generates code. It's whether it ",[63,64,65],"em",{},"provisions services",". Generating a checkout component is easy. Creating Stripe products, wiring a signature-verified webhook, and syncing subscription state to your database is the work — and almost no vibe tool does it.",[15,68,70],{"id":69},"the-vibe-coding-landscape-2026","The Vibe Coding Landscape (2026)",[11,72,73,76],{},[35,74,75],{},"Cursor + editor extensions"," give you velocity inside a real codebase. Great for control, useless for wiring services — you do that yourself.",[11,78,79,82],{},[35,80,81],{},"Lovable, Bolt.new, Replit"," generate full-stack UIs fast. Lovable is the quickest to a beautiful mockup; Bolt lets you export and own the code; Replit is a strong learning environment. All three ship fragile production code once you leave the happy path.",[11,84,85,88],{},[35,86,87],{},"Base44, Emergent, Windsurf"," trade on different strengths — Windsurf's multi-file reasoning is the most developer-serious of the group; the others chase prototype speed.",[11,90,91,94],{},[35,92,93],{},"VS Code + Copilot"," is the free-to-cheap baseline. It writes lines; you architect everything.",[11,96,97,100],{},[35,98,99],{},"Vibecode and Knack"," are no-code\u002Flow-code routes for founders who don't write code and accept the ceiling that comes with it.",[15,102,104],{"id":103},"the-problem-every-ranking-misses-vibe-coding-stops-at-code","The Problem Every Ranking Misses: Vibe Coding Stops at Code",[20,106,108],{"id":107},"code-generation-saas-setup","Code Generation ≠ SaaS Setup",[11,110,111,112,115,116,123],{},"Lovable can ship a UI in an hour. Your billing still takes a week. Why? Because generating a subscription page and ",[63,113,114],{},"actually processing subscriptions"," are different problems. One is markup. The other is ",[117,118,122],"a",{"href":119,"rel":120},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fhow-to-ship-saas-fast",[121],"nofollow","webhook idempotency, refunds, and subscription state"," — the plumbing that only announces itself when it breaks.",[20,125,127],{"id":126},"the-plumbing-gap","The Plumbing Gap",[11,129,130,131,136],{},"Service provisioning — Stripe, Supabase, webhooks, row-level security, transactional email — is invisible in every tool comparison. It's the part that ate weekends before AI and, as we've written, ",[117,132,135],{"href":133,"rel":134},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fnuxt-saas-boilerplate-for-ai-agents",[121],"the slow part just moved somewhere else"," once agents could write code faster than we could wire services.",[20,138,140],{"id":139},"agent-assisted-vs-agent-driven","Agent-Assisted vs. Agent-Driven",[11,142,143,144,147,148,151],{},"Most tools are agent-",[63,145,146],{},"assisted",": they generate code you then integrate. A smaller category is agent-",[63,149,150],{},"driven",": the agent provisions infrastructure directly. That's the tier the rankings ignore.",[20,153,155],{"id":154},"why-your-coding-agent-cant-wire-stripe-webhooks-yet","Why Your Coding Agent Can't Wire Stripe Webhooks (Yet)",[11,157,158,159,162],{},"An agent will happily hallucinate a webhook handler that looks right and double-charges customers under retry. The missing layer is a ",[63,160,161],{},"contract"," — one documented way to do data access and secrets — so the agent stays consistent. More on that below.",[15,164,166],{"id":165},"choosing-a-vibe-coding-tool-the-real-framework","Choosing a Vibe Coding Tool: The Real Framework",[11,168,169],{},"Ask five questions, not \"which tool is trending.\"",[171,172,173,180,186,192,198],"ol",{},[174,175,176,179],"li",{},[35,177,178],{},"Prototype or shipping to customers?"," This matters more than brand. A prototype tolerates fragility; a paying-customer product does not.",[174,181,182,185],{},[35,183,184],{},"Do you need to own your code?"," Lovable and Bolt trade ownership for speed. Cursor and starters you clone give you full TypeScript control.",[174,187,188,191],{},[35,189,190],{},"Does the tool provision services or just generate code?"," This is the question nobody asks and the one that decides your launch date.",[174,193,194,197],{},[35,195,196],{},"Can your agent read your conventions?"," Without documented standards, your agent drifts across refactors.",[174,199,200,203,204,209],{},[35,201,202],{},"Subscription vs. one-time cost?"," Cursor ~$20\u002Fmo, Copilot ~$20\u002Fmo, VS Code free. A starter like BoiledPlate is free for ",[117,205,208],{"href":206,"rel":207},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Ffree-nuxt-supabase-saas-boilerplate",[121],"Lite"," or €159 one-time for Pro.",[15,211,213],{"id":212},"build-speed-shootout-hours-1-8-and-40","Build Speed Shootout: Hours 1, 8, and 40",[11,215,216,219],{},[35,217,218],{},"Hour 1 — Landing page."," Every tool does this. Lovable and Bolt are fastest.",[11,221,222,225],{},[35,223,224],{},"Hour 8 — Authenticated app with dashboard."," Most vibe tools stall here. Session management, roles, and protecting one user's data from another require real access control, not generated markup.",[11,227,228,231,232,234],{},[35,229,230],{},"Hour 40 — Shipped SaaS (auth + billing + email + RLS)."," Very few tools reach here. An experienced dev in Cursor can, given time. An agent working from a starter that ",[63,233,65],{}," can do it faster.",[11,236,237,240],{},[35,238,239],{},"The hidden hours."," Webhook retry debugging, refund flows, EU consent rules. Nobody counts these because vibe tools don't handle them — you do, later, in a panic.",[15,242,244],{"id":243},"the-billing-reality-check","The Billing Reality Check",[20,246,248],{"id":247},"why-ui-builders-break-at-payment-processing","Why UI Builders Break at Payment Processing",[11,250,251],{},"Lovable and Bolt ship a database. They don't ship idempotent webhooks or refund logic. Payment processing is where the \"minutes to launch\" promise quietly expires.",[20,253,255],{"id":254},"the-source-of-truth-problem","The Source of Truth Problem",[11,257,258,259,264],{},"The single most common billing bug: trusting the client-side success page. Your checkout redirect is a hope, not a fact. The ",[117,260,263],{"href":261,"rel":262},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fstripe-webhooks-source-of-truth",[121],"only reliable source of billing truth is the webhook",". Vibe tools that wire success-page logic set you up for phantom subscriptions and lost revenue.",[20,266,268],{"id":267},"multi-plan-subscriptions-and-eu-withdrawal-waivers","Multi-Plan Subscriptions and EU Withdrawal Waivers",[11,270,271,272,277],{},"Production SaaS hits edge cases the demos skip. If you sell in Germany, for example, you may need to ",[117,273,276],{"href":274,"rel":275},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fstripe-checkout-consent-collection-german-withdrawal-waiver",[121],"encode a withdrawal-right waiver into the pay button"," before Stripe Checkout is legally clean. No vibe tool mentions this in its fine print.",[15,279,281],{"id":280},"agent-driven-setup-the-missing-tier","Agent-Driven Setup: The Missing Tier",[11,283,284,285,290,291,294],{},"This is where ",[117,286,289],{"href":287,"rel":288},"https:\u002F\u002Fboiledplate.ai",[121],"BoiledPlate"," does something different from vibe coding. Your coding agent interviews you — name, languages, theme, billing model — then reshapes the codebase with ",[63,292,293],{},"deterministic patches"," and provisions the services: Stripe products and webhooks, a Supabase database with RLS, Google sign-in. The plumbing, done in one session.",[11,296,297,298,303],{},"The thing that makes agent output trustworthy is the contract file. As we've argued, you should ",[117,299,302],{"href":300,"rel":301},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fconventions-for-ai-coding-agents",[121],"write your conventions for the agent, not the next hire",". One documented AGENTS.md keeps the agent consistent across ten refactors instead of drifting into an unmaintainable mess by month two.",[11,305,306],{},"And when manual coding beats auto-generated UIs — complex forms, custom billing flows — you still have full TypeScript control, because you own real code, not a locked platform.",[15,308,310],{"id":309},"comparison-matrix","Comparison Matrix",[312,313,314,320,326,332,338,344],"ul",{},[174,315,316,319],{},[35,317,318],{},"Speed to prototype:"," Lovable > Bolt > Replit > Cursor > BoiledPlate",[174,321,322,325],{},[35,323,324],{},"Code ownership:"," BoiledPlate = Cursor > Windsurf > Replit > Bolt > Lovable",[174,327,328,331],{},[35,329,330],{},"Service provisioning (non-code):"," BoiledPlate — genuinely alone here",[174,333,334,337],{},[35,335,336],{},"Production readiness (billing, RLS, email, webhooks):"," BoiledPlate > Cursor (with guidance) > everyone else",[174,339,340,343],{},[35,341,342],{},"Learning curve for non-developers:"," Lovable easiest → BoiledPlate steepest",[174,345,346,349],{},[35,347,348],{},"Year-1 TCO, solo founder:"," Lovable ~$300 + 200h debugging; Cursor ~$240 + 100h; BoiledPlate Pro €159 + ~10h agent interview",[15,351,353],{"id":352},"where-every-tool-fails","Where Every Tool Fails",[11,355,356,359],{},[35,357,358],{},"Lovable:"," beautiful, locked to their database, no real RLS, no webhooks, refunds are custom work.",[11,361,362,365],{},[35,363,364],{},"Bolt:"," fast until auth — session management, roles, and subscription state are all manual after generation.",[11,367,368,371],{},[35,369,370],{},"Cursor:"," infinite flexibility, infinite debugging. You own every bug, copilot hallucination, and peer-dependency conflict.",[11,373,374,377],{},[35,375,376],{},"Replit:"," great for learning, weak for production hosting and hardening.",[11,379,380,383],{},[35,381,382],{},"BoiledPlate Lite (free):"," you still do the wiring by hand — clone, read AGENTS.md, apply patches. Same destination as Cursor, honest about the manual start.",[15,385,387],{"id":386},"the-anti-hype-take","The Anti-Hype Take",[11,389,390,391,396],{},"Vibe tools crush the first 80% — the UI and the happy path. You still own the other 80%: edge cases, compliance, reliability. And here's the uncomfortable truth: ",[117,392,395],{"href":393,"rel":394},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fnuxt-supabase-stripe-saas-boilerplate",[121],"the framework is not what slows you down",". The speed gap between Nuxt, React, and Vue is hours. The gap between one-click Stripe setup and manual webhook debugging is weeks.",[11,398,399],{},"Two things compound the pain. First, tools that don't enforce conventions let your agent drift until the codebase is unmaintainable. Second, vendor lock-in: with Lovable and Bolt, you can't move — you're stuck debugging their platform on their timeline.",[15,401,403],{"id":402},"honest-recommendations","Honest Recommendations",[312,405,406,412,418,424,430,436],{},[174,407,408,411],{},[35,409,410],{},"Use Lovable if"," you're non-technical, fine with lock-in, and don't need payments in year one.",[174,413,414,417],{},[35,415,416],{},"Use Bolt.new if"," you want that speed but must export and own your code, and you'll wire services yourself later.",[174,419,420,423],{},[35,421,422],{},"Use Cursor if"," you're an experienced dev who values control and full-stack type safety and has time to debug.",[174,425,426,429],{},[35,427,428],{},"Use Replit if"," you're learning or prototyping for an afternoon — not shipping to production.",[174,431,432,435],{},[35,433,434],{},"Use BoiledPlate Pro if"," you want Stripe, Supabase, and Google sign-in wired in one session, you work with coding agents, and you value deterministic patches.",[174,437,438,441],{},[35,439,440],{},"Use BoiledPlate Lite if"," you like the Nuxt + Supabase + Stripe stack and want to learn by reading and patching yourself.",[15,443,445],{"id":444},"the-overlooked-skill-billing-and-webhooks","The Overlooked Skill: Billing and Webhooks",[11,447,448,449,454,455,460],{},"The real production skill isn't generating screens. It's ",[117,450,453],{"href":451,"rel":452},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fstripe-subscriptions-nuxt-supabase",[121],"idempotent webhook design"," so retries don't double-charge, refund flows that keep Stripe state honest, RLS as your access-control layer, transactional email that sends exactly once, and GDPR-grade consent handling. Stripe's own ",[117,456,459],{"href":457,"rel":458},"https:\u002F\u002Fdocs.stripe.com\u002Fwebhooks",[121],"webhook documentation"," is blunt about idempotency and retries for a reason — this is where money leaks. None of it is clever. All of it is required. And it's precisely what vibe tools leave out.",[15,462,464],{"id":463},"conclusion-pick-the-right-tool-for-your-actual-problem","Conclusion: Pick the Right Tool for Your Actual Problem",[11,466,467],{},"Your real problem was never code generation. It's Stripe, Supabase, email, RLS, webhooks, and not losing money to edge cases. Vibe coding tools solve the first slice — the UI — and leave you the rest.",[11,469,470],{},"So your decision reduces to ownership versus automation. Lovable trades your code for their speed. Cursor trades your time for your control. Agent-driven setup trades a bit of upfront customization — the interview — for long-term automation that survives your customizations. Choose based on what you're actually building, not on which demo looked fastest.",{"title":472,"searchDepth":473,"depth":473,"links":474},"",3,[475,481,482,488,489,490,495,496,497,498,499,500,501],{"id":17,"depth":476,"text":18,"children":477},2,[478,479,480],{"id":22,"depth":473,"text":23},{"id":29,"depth":473,"text":30},{"id":57,"depth":473,"text":58},{"id":69,"depth":476,"text":70},{"id":103,"depth":476,"text":104,"children":483},[484,485,486,487],{"id":107,"depth":473,"text":108},{"id":126,"depth":473,"text":127},{"id":139,"depth":473,"text":140},{"id":154,"depth":473,"text":155},{"id":165,"depth":476,"text":166},{"id":212,"depth":476,"text":213},{"id":243,"depth":476,"text":244,"children":491},[492,493,494],{"id":247,"depth":473,"text":248},{"id":254,"depth":473,"text":255},{"id":267,"depth":473,"text":268},{"id":280,"depth":476,"text":281},{"id":309,"depth":476,"text":310},{"id":352,"depth":476,"text":353},{"id":386,"depth":476,"text":387},{"id":402,"depth":476,"text":403},{"id":444,"depth":476,"text":445},{"id":463,"depth":476,"text":464},"2026-07-10","Real breakdown of vibe coding tools beyond UI generation. Compare Cursor, Lovable, Bolt.new, and discover what separates hype from production-ready.",false,"md",{},true,"\u002Fblog\u002Fvibe-coding-tool-honest-comparison",{"title":5,"description":503},"blog\u002Fvibe-coding-tool-honest-comparison",[512,513,514,515],"vibe coding","AI development tools","low-code platforms","no-code tools","jpgQ8C5T-0xERT4O-L2ViMoXHSa2VCyq8r3bnV8nRX8",[518,1019,1328],{"id":519,"title":520,"author":6,"body":521,"category":6,"date":1007,"description":1008,"draft":504,"extension":505,"image":6,"meta":1009,"navigation":507,"path":1010,"seo":1011,"stem":1012,"tags":1013,"__hash__":1018},"blog\u002Fblog\u002Fvibecoding-apps-promise-vs-reality.md","Vibecoding Apps: The Promise vs. Production Reality",{"type":8,"value":522,"toc":989},[523,532,535,539,542,545,563,566,570,573,576,588,592,595,621,624,628,688,692,695,733,736,740,743,750,763,767,770,778,781,807,810,814,825,828,832,835,871,874,878,881,901,904,908,940,944,952,956,959,963,970,974,980],[11,524,525,526,531],{},"Vibe coding has a clean pitch: describe your app in plain language, and an AI writes the code. The term went mainstream after Andrej Karpathy ",[117,527,530],{"href":528,"rel":529},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVibe_coding",[121],"described it"," as \"fully giving in to the vibes\" and forgetting the code even exists. For prototypes, it genuinely works. For production SaaS with real billing and real users, the gap between \"it runs\" and \"it ships\" is where most vibecoding apps quietly stall.",[11,533,534],{},"This is an honest map of what vibe coding actually does, where the tools break, and how agent-guided building differs from one-shot generation.",[15,536,538],{"id":537},"what-vibe-coding-actually-is","What Vibe Coding Actually Is",[11,540,541],{},"Vibe coding is AI-assisted development where natural language drives code generation instead of traditional syntax. You describe intent; a model produces implementation.",[11,543,544],{},"But \"vibe coding\" is a spectrum, not one thing:",[312,546,547,553],{},[174,548,549,552],{},[35,550,551],{},"Pure description"," (Google AI Studio, Lovable): you type a goal, you get output.",[174,554,555,558,559,562],{},[35,556,557],{},"Agent-guided structured building"," (Cursor with conventions, ",[117,560,289],{"href":287,"rel":561},[121],"): an agent interviews you, then applies structured changes to a known codebase shape.",[11,564,565],{},"Both use natural language. Only one keeps producing coherent code past the first afternoon.",[15,567,569],{"id":568},"the-promise-vs-the-reality-gap","The Promise vs. the Reality Gap",[11,571,572],{},"Marketing says: describe your app, get a working product. What actually happens is: description → generated code → integration hell.",[11,574,575],{},"The generated code is usually the easy 10%. The other 90% is plumbing — the wiring between services that no demo ever shows. Stripe webhooks that agree with your database. Row-level security policies. Refund state. EU consent flows. i18n strings that have to land in five places before the build stops complaining.",[11,577,578,579,582,583,587],{},"Vibe coding fails silently here because a one-shot generator can produce a Stripe checkout button that ",[63,580,581],{},"looks"," done and has no working webhook behind it. It compiles. It even redirects. It just doesn't record the payment when the user closes the tab. As we've argued before, ",[117,584,586],{"href":119,"rel":585},[121],"the stack is easy and the plumbing is the project"," — and plumbing is exactly what one-shot tools skip.",[15,589,591],{"id":590},"vibe-coding-tools-an-honest-taxonomy","Vibe Coding Tools: An Honest Taxonomy",[11,593,594],{},"Four broad categories, each solving a different slice:",[312,596,597,603,609,615],{},[174,598,599,602],{},[35,600,601],{},"No-code visual builders"," (FlutterFlow, Canva Code): UI-first, limited backend logic. Fine for MVPs, high lock-in.",[174,604,605,608],{},[35,606,607],{},"Pure language-to-code"," (Google AI Studio, Lovable): fast initial output, weak at multi-service integration.",[174,610,611,614],{},[35,612,613],{},"Agent-guided structured builders"," (BoiledPlate, Cursor + strong conventions): interviews shape the infrastructure, deterministic patches keep the codebase coherent.",[174,616,617,620],{},[35,618,619],{},"Full-stack IDE environments"," (Replit, Bolt.new, Base44): sandboxed and impressive, but you still wire the real services yourself.",[11,622,623],{},"None of these is strictly better. They're built for different points in the lifecycle. The mistake is using an exploration tool for a production launch.",[20,625,627],{"id":626},"what-each-actually-solves","What each actually solves",[629,630,631,644],"table",{},[632,633,634],"thead",{},[635,636,637,641],"tr",{},[638,639,640],"th",{},"Need",[638,642,643],{},"Who handles it well",[645,646,647,656,664,672,680],"tbody",{},[635,648,649,653],{},[650,651,652],"td",{},"Rapid prototyping",[650,654,655],{},"All of them, inconsistently",[635,657,658,661],{},[650,659,660],{},"Production auth with RLS",[650,662,663],{},"Only tools with deterministic secrets + database-level permissions",[635,665,666,669],{},[650,667,668],{},"Real billing (idempotent webhooks)",[650,670,671],{},"Almost none in one-shot mode",[635,673,674,677],{},[650,675,676],{},"Multi-language i18n",[650,678,679],{},"Almost none automatically",[635,681,682,685],{},[650,683,684],{},"SEO (JSON-LD, canonicals, prerendering)",[650,686,687],{},"Only purpose-built frameworks",[15,689,691],{"id":690},"the-workflow-where-the-time-actually-goes","The Workflow: Where the Time Actually Goes",[11,693,694],{},"People imagine vibecoding apps is 90% prompting. In practice, for anything real:",[312,696,697,703,709,715,721,727],{},[174,698,699,702],{},[35,700,701],{},"Prompt clarity and iteration"," — 5–15% of time, but decisive.",[174,704,705,708],{},[35,706,707],{},"Reviewing generated code quality"," — 20–30%.",[174,710,711,714],{},[35,712,713],{},"Service provisioning"," (Stripe, Supabase, Google OAuth) — manual in most tools.",[174,716,717,720],{},[35,718,719],{},"Webhook architecture and idempotency"," — 30–40%. This is the real work.",[174,722,723,726],{},[35,724,725],{},"Edge cases"," — refunds, subscription transitions, EU withdrawal periods.",[174,728,729,732],{},[35,730,731],{},"Deployment and monitoring"," — always an afterthought.",[11,734,735],{},"The prompt is the smallest slice. The webhook is the biggest. That ratio is why \"describe your app\" undersells the job.",[15,737,739],{"id":738},"ai-agents-vs-vibe-coding-tools","AI Agents vs. Vibe Coding Tools",[11,741,742],{},"The core difference is memory and structure.",[11,744,745,746,749],{},"A vibe coding tool does one-shot generation with a limited context window and no persistent conventions. An agent working against a starter kit does iterative interviews, applies deterministic patches, and reads a contract that tells it how ",[63,747,748],{},"this"," codebase does things.",[11,751,752,753,757,758,762],{},"That contract matters more than it sounds. As we've written, ",[117,754,756],{"href":300,"rel":755},[121],"an agent cannot smell a codebase"," — give it three ways to fetch data and it cheerfully adds a fourth, because it has no reason to prefer yours. Without written conventions, every suggestion drifts a little further from the shape of your code. BoiledPlate ships an ",[759,760,761],"code",{},"AGENTS.md"," contract precisely so the agent reads one documented way to do data access and secrets, then respects your customizations instead of reinventing them.",[15,764,766],{"id":765},"the-billing-problem-nobody-solves","The Billing Problem Nobody Solves",[11,768,769],{},"This is where vibecoding apps break most predictably.",[11,771,772,773,777],{},"Client-side success pages lie. The user pays, the browser redirects, and then they close the tab before your success page finishes running. If your billing state depends on that page, you just lost a payment record. The only reliable source of truth is the Stripe webhook — ",[117,774,776],{"href":261,"rel":775},[121],"your checkout success page should not touch your billing state"," at all.",[11,779,780],{},"Doing this right requires:",[312,782,783,795,801],{},[174,784,785,788,789,794],{},[35,786,787],{},"Idempotent webhooks"," so a redelivered event doesn't double-charge or double-provision. Stripe ",[117,790,793],{"href":791,"rel":792},"https:\u002F\u002Fdocs.stripe.com\u002Fwebhooks#handle-duplicate-events",[121],"explicitly recommends"," handling duplicate events.",[174,796,797,800],{},[35,798,799],{},"Refund and downgrade state machines"," — partial refunds, subscription changes, EU withdrawal windows.",[174,802,803,806],{},[35,804,805],{},"Stripe as the single source of truth",", with everything else a view of Stripe state.",[11,808,809],{},"Almost no one-shot tool encodes this. It requires ongoing architecture, not a single generation.",[15,811,813],{"id":812},"auth-and-security-where-it-breaks-quietly","Auth and Security: Where It Breaks Quietly",[11,815,816,817,820,821,824],{},"Row-level security is invisible in generated code and critical in production. A generator can wire Google sign-in flawlessly and still leave your database wide open, because sign-in only proves ",[63,818,819],{},"who"," the user is — RLS decides ",[63,822,823],{},"what rows"," they can touch.",[11,826,827],{},"Supabase RLS policies are auto-generated wrong more often than right. This is the classic \"a user saw someone else's data\" bug, and it never shows up in a demo because demos have one user. Agent-driven builders solve this by encoding RLS templates as part of the starter, not leaving each policy to a fresh guess.",[15,829,831],{"id":830},"real-world-bugs-in-generated-code","Real-World Bugs in Generated Code",[11,833,834],{},"Generated code fails in specific, repeatable ways:",[312,836,837,849,859,865],{},[174,838,839,842,843,848],{},[35,840,841],{},"JSON-LD hydration crashes"," in Nuxt SSR — a page that returns ",[117,844,847],{"href":845,"rel":846},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fthe-page-that-returned-200-on-the-server-and-500-in-the-browser-a-json-ld-tempor",[121],"200 from curl and 500 in the browser"," because of source order. A generator won't catch this; it's an integration bug, not a syntax bug.",[174,850,851,854,855,858],{},[35,852,853],{},"Canonical URL edge cases"," — trailing slashes, query params, and the memorable case of a blog telling Google its canonical URL was ",[759,856,857],{},"localhost:3000",".",[174,860,861,864],{},[35,862,863],{},"TypeScript strict mode"," — most generators skip it and hand you union-type nightmares.",[174,866,867,870],{},[35,868,869],{},"Peer dependency conflicts"," — Stripe SDK versions, Supabase auth breaking changes.",[11,872,873],{},"None of these are clever problems. They're endless, slightly different, and exactly the kind of thing that eats a launch weekend.",[15,875,877],{"id":876},"the-cost-equation","The Cost Equation",[11,879,880],{},"Realistic numbers matter more than hype:",[312,882,883,889,895],{},[174,884,885,888],{},[35,886,887],{},"Time to working prototype",": a couple of hours in Lovable; roughly an hour with a structured starter if the interview is clear.",[174,890,891,894],{},[35,892,893],{},"Time to production-ready",": add 2–4 weeks of plumbing regardless of tool.",[174,896,897,900],{},[35,898,899],{},"Cost of lock-in",": high with FlutterFlow and Canva Code, medium with Replit and Bolt, low with GitHub-native delivery where the code lives next to your CI\u002FCD.",[11,902,903],{},"The prototype gap between tools is small. The production gap is enormous, and it's decided by architecture, not by prompt quality.",[15,905,907],{"id":906},"choosing-a-tool-a-quick-matrix","Choosing a Tool: A Quick Matrix",[312,909,910,916,922,928,934],{},[174,911,912,915],{},[35,913,914],{},"MVP under a week",": Google AI Studio, Lovable, Canva Code.",[174,917,918,921],{},[35,919,920],{},"Production SaaS with billing",": an agent plus a strong starter kit, or manual work with agent oversight.",[174,923,924,927],{},[35,925,926],{},"Mobile-first",": FlutterFlow.",[174,929,930,933],{},[35,931,932],{},"Maximum flexibility",": Replit, Bolt.new — sandboxed, but you wire everything.",[174,935,936,939],{},[35,937,938],{},"Zero lock-in",": GitHub + Claude agent + a Nuxt\u002FSupabase\u002FStripe starter.",[15,941,943],{"id":942},"why-nuxt-supabase-stripe-works-for-agents","Why Nuxt + Supabase + Stripe Works for Agents",[11,945,946,947,951],{},"This combination isn't fashion; it's about predictable integration points. Nuxt's universal rendering forces deterministic patterns an agent can read and extend. Supabase RLS policies are template-able. Stripe webhooks give one unambiguous source of truth. Every SaaS starter ships this stack — but as we've noted, ",[117,948,950],{"href":133,"rel":949},[121],"that was never the hard part",". The parts are cheap; bolting them together is the project.",[15,953,955],{"id":954},"what-vibe-coding-wont-do-yet","What Vibe Coding Won't Do Yet",[11,957,958],{},"Be honest about the ceiling. Generated schemas are brittle, so migrations are risky. Updating generated code tends to break old queries. Vibe-coded apps are hard to inherit because no one wrote down the conventions, which means no one owns the plumbing. And AI-generated code against regulatory requirements is still a gray area.",[15,960,962],{"id":961},"where-vibe-coding-genuinely-shines","Where Vibe Coding Genuinely Shines",[11,964,965,966,969],{},"None of this means vibe coding is a fad. It is genuinely faster for exploration, for the prototype-to-feedback loop, and for grinding down repetitive boilerplate. The best use of an agent isn't \"build me a startup\" — it's \"given this codebase shape, what's the right next step?\" That question only has a good answer when the codebase ",[63,967,968],{},"has"," a documented shape.",[15,971,973],{"id":972},"conclusion-a-layer-not-a-replacement","Conclusion: A Layer, Not a Replacement",[11,975,976,977,979],{},"The real speedup in vibecoding apps isn't the initial generation — it's structured integration. The framework was never what slowed you down; the plumbing was. Use vibe coding tools for exploration, and use agent-guided starter kits for production, where deterministic patches and an ",[759,978,761],{}," contract keep output coherent past month three.",[11,981,982,983,988],{},"That's the model BoiledPlate is built around: an agent that interviews you, provisions Stripe, Supabase, and Google sign-in, and then respects your customizations instead of drifting away from them. You can read ",[117,984,987],{"href":985,"rel":986},"https:\u002F\u002Fboiledplate.ai\u002Fblog",[121],"more of the engineering log on the blog"," — every edge case it took to make the plumbing trustworthy is written down, because that's the part vibe coding still can't hand you for free.",{"title":472,"searchDepth":473,"depth":473,"links":990},[991,992,993,996,997,998,999,1000,1001,1002,1003,1004,1005,1006],{"id":537,"depth":476,"text":538},{"id":568,"depth":476,"text":569},{"id":590,"depth":476,"text":591,"children":994},[995],{"id":626,"depth":473,"text":627},{"id":690,"depth":476,"text":691},{"id":738,"depth":476,"text":739},{"id":765,"depth":476,"text":766},{"id":812,"depth":476,"text":813},{"id":830,"depth":476,"text":831},{"id":876,"depth":476,"text":877},{"id":906,"depth":476,"text":907},{"id":942,"depth":476,"text":943},{"id":954,"depth":476,"text":955},{"id":961,"depth":476,"text":962},{"id":972,"depth":476,"text":973},"2026-07-19","Explore how vibecoding apps work, where they break down, and the gap between prototypes and production SaaS that actually ships with real users.",{},"\u002Fblog\u002Fvibecoding-apps-promise-vs-reality",{"title":520,"description":1008},"blog\u002Fvibecoding-apps-promise-vs-reality",[1014,1015,1016,1017],"vibecoding","AI development","code generation","SaaS development","6xVs1JNK5DqaC2I5I7p7VIrAUYF6PkCHDYjGNHtBzOs",{"id":1020,"title":1021,"author":6,"body":1022,"category":6,"date":1316,"description":1317,"draft":504,"extension":505,"image":6,"meta":1318,"navigation":507,"path":1319,"seo":1320,"stem":1321,"tags":1322,"__hash__":1327},"blog\u002Fblog\u002Fvibe-coding-gemini-production.md","Vibe Coding with Gemini: From Demo to Production Reality",{"type":8,"value":1023,"toc":1300},[1024,1027,1031,1034,1037,1041,1044,1047,1050,1054,1057,1060,1074,1082,1086,1089,1096,1099,1107,1111,1114,1122,1128,1132,1140,1153,1165,1169,1172,1183,1187,1195,1219,1223,1231,1235,1238,1242,1245,1257,1263,1266,1270,1278,1282,1288,1292],[11,1025,1026],{},"Vibe coding is having a moment. Type a sentence, get an app. Google's pitch with Gemini in AI Studio is that anyone can describe a \"vibe\" and watch a working React app appear, then ship it to Cloud Run in minutes. It's genuinely impressive. It's also where most of the honest conversation stops. Because the distance between \"it runs on my screen\" and \"it survives paying customers\" is exactly the distance this article is about.",[15,1028,1030],{"id":1029},"what-vibe-coding-actually-means","What \"Vibe Coding\" Actually Means",[11,1032,1033],{},"Vibe coding means turning natural-language prompts into functional code — not sketches, not pseudocode, but something that compiles and deploys. You describe the goal (\"a neon-themed pomodoro timer for my kid\") and Gemini writes it. People have built personalized apps in under 30 minutes this way, and the demos are real.",[11,1035,1036],{},"The gap is between \"describe your vibe\" and \"ships to production.\" Gemini positions this as democratized development: anyone can code now. What that actually requires, once you leave the single-file demo, is everything vibe coding quietly skips — billing state, data isolation, webhook retries, compliance. The framework was never the hard part.",[15,1038,1040],{"id":1039},"gemini-vs-claude-the-agent-architecture-choice","Gemini vs. Claude: The Agent Architecture Choice",[11,1042,1043],{},"The two dominant coding-agent styles behave very differently, and it matters more than benchmarks suggest.",[11,1045,1046],{},"Gemini sprints. As one developer put it comparing it to Claude Code, \"Gemini doesn't make a plan and ask you if you want to proceed. It sprints ahead.\" That's fast and satisfying for a prototype. Gemini 2.5 Flash is faster still than Gemini 3 Pro, but developers who ran the same project through both found Flash more manual and more error-prone — speed traded against correctness.",[11,1048,1049],{},"Claude's agentic workflow leans the other way: plan first, then execute deliberate, repeatable changes. For a throwaway timer, planning is overhead. For a multi-tenant SaaS with billing, planning is the whole game. Consistency beats velocity the moment your codebase outlives the first session.",[15,1051,1053],{"id":1052},"the-real-cost-of-fast-single-file-apps-vs-plumbing","The Real Cost of \"Fast\": Single-File Apps vs. Plumbing",[11,1055,1056],{},"A neon React timer in half an hour is a fair benchmark for what vibe coding covers well: UI components, basic logic, deployment scaffolding.",[11,1058,1059],{},"Here's what it doesn't touch:",[312,1061,1062,1065,1068,1071],{},[174,1063,1064],{},"Signature-verified, idempotent Stripe webhooks",[174,1066,1067],{},"Row-level security so users can't read each other's rows",[174,1069,1070],{},"Refund flows that don't double-cancel on a retry",[174,1072,1073],{},"EU consent compliance baked into the pay button",[11,1075,1076,1077,1081],{},"None of that is clever work. It's endless, slightly-different-every-time work — the kind we call ",[117,1078,1080],{"href":119,"rel":1079},[121],"plumbing",". And it's where launches actually stall. Vibe coding a UI is a solved problem. Wiring the services beneath it is the project.",[15,1083,1085],{"id":1084},"building-real-apps-where-google-ai-studio-hits-a-wall","Building Real Apps: Where Google AI Studio Hits a Wall",[11,1087,1088],{},"Google AI Studio's newer vibe-coding experience can add databases and even multiplayer. That's progress, but \"add a database\" is where the real work starts, not where it ends.",[11,1090,1091,1092,1095],{},"Multiplayer requires state synchronization and, critically, ",[35,1093,1094],{},"row-level security"," so one user's writes never leak into another's session. A database alone gives you none of that — you still need a migration strategy, schema validation, and a policy layer enforced at query time.",[11,1097,1098],{},"Billing is worse. Provisioning Stripe products, verifying webhook signatures, and making handlers idempotent is not something a prompt reliably produces. And auth? Adding Google sign-in is trivial. Managing the user session, the RLS policies tied to it, and the secrets that must never reach the client is not.",[11,1100,1101,1102,1106],{},"This is exactly the box-of-parts problem we've written about before: ",[117,1103,1105],{"href":133,"rel":1104},[121],"every boilerplate ships the stack",", then leaves you alone in a room with the wiring.",[15,1108,1110],{"id":1109},"the-vibe-coding-workflow-that-actually-works-for-saas","The Vibe Coding Workflow That Actually Works for SaaS",[11,1112,1113],{},"The missing step in the \"describe it and deploy\" pitch is the interview.",[11,1115,1116,1117,1121],{},"Before an agent should touch a SaaS codebase, it needs answers: What's the billing model — one-time or subscription, how many plans? What user roles exist? What data must be isolated per tenant? BoiledPlate's setup runs exactly this way — ",[117,1118,1120],{"href":287,"rel":1119},[121],"your coding agent interviews you",", then provisions Stripe, Supabase, and Google sign-in based on your answers.",[11,1123,1124,1125,1127],{},"Those answers drive ",[35,1126,293],{},": automated, repeatable code changes that reshape the starter to your specific setup rather than hallucinating a fresh architecture each run. And validation matters — \"the code compiles\" is not \"the billing survives production.\" Those are two entirely different claims.",[15,1129,1131],{"id":1130},"webhook-architecture-the-plumbing-nobody-teaches","Webhook Architecture: The Plumbing Nobody Teaches",[11,1133,1134,1135,1139],{},"Here is the single lesson most vibe-coded billing systems get wrong: your checkout success page is not your source of truth. ",[117,1136,1138],{"href":261,"rel":1137},[121],"Stripe webhooks are",". The user can close the tab, lose signal, or refresh — the webhook is what tells you money moved.",[11,1141,1142,1143,1146,1147,1152],{},"That means handlers must be ",[35,1144,1145],{},"idempotent",". Stripe retries deliveries. If your handler grants access or cancels a subscription twice because it got called twice, you have a bug that only shows up under load. We've written in detail about ",[117,1148,1151],{"href":1149,"rel":1150},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fthe-github-invite-is-the-product-building-a-stripe-webhook-where-delivery-throws",[121],"a webhook where some failures must throw and some must never do"," — the distinction is the difference between a self-healing system and a support ticket.",[11,1154,1155,1156,1160,1161,1164],{},"Compliance lives here too. Encoding a ",[117,1157,1159],{"href":274,"rel":1158},[121],"German withdrawal-right waiver into the pay button"," via Stripe's ",[759,1162,1163],{},"consent_collection"," is not something a vibe prompt knows to do. It's compliance as code, and it's mandatory in the EU.",[15,1166,1168],{"id":1167},"agent-consistency-writing-conventions-that-survive-updates","Agent Consistency: Writing Conventions That Survive Updates",[11,1170,1171],{},"An agent cannot smell a codebase. Give it three ways to fetch data and it adds a fourth — not because it's dumb, but because it has no reason to prefer yours. This is the failure mode behind \"anyone can code\": the agent drifts, and by month three you have five patterns for one job.",[11,1173,1174,1175,1177,1178,1182],{},"The fix is a contract. An ",[759,1176,761],{}," file documents one way to access data, handle secrets, and apply patches, so ",[117,1179,1181],{"href":300,"rel":1180},[121],"agent output stays consistent"," past the first session. Gemini's sprint-ahead style has no equivalent plan-and-confirm gate, which is fine for a demo and dangerous for a codebase you'll maintain for a year.",[15,1184,1186],{"id":1185},"vibe-coding-languages-frameworks-and-real-bugs","Vibe Coding Languages, Frameworks, and Real Bugs",[11,1188,1189,1190,1194],{},"Most vibe coding assumes one language — JavaScript or TypeScript — and one happy path. Production is messier. A serious SaaS often needs ",[117,1191,1193],{"href":287,"rel":1192},[121],"four languages from day one"," via i18n, where a single new locale string has to land in five places before the build stops complaining.",[11,1196,1197,1198,1202,1203,1208,1209,1212,1213,1218],{},"Real debugging stories make the point. We shipped a page that ",[117,1199,1201],{"href":845,"rel":1200},[121],"returned 200 from curl and 500 in Chrome"," — a JSON-LD hydration bug hiding in source order. Our blog once ",[117,1204,1207],{"href":1205,"rel":1206},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Four-blog-canonically-pointed-at-localhost",[121],"told Google its canonical URL was localhost:3000",". A ",[759,1210,1211],{},"@vercel\u002Fanalytics"," install ",[117,1214,1217],{"href":1215,"rel":1216},"https:\u002F\u002Fboiledplate.ai\u002Fblog\u002Fvercel-web-analytics-nuxt-4-analytics-package-breaks-typecheck",[121],"broke Nuxt typecheck"," through a peer-dependency conflict. None of these appear in a vibe-coding demo. All of them appear in a real project.",[15,1220,1222],{"id":1221},"typed-end-to-end-why-vibe-coding-needs-typescript-discipline","Typed End to End: Why Vibe Coding Needs TypeScript Discipline",[11,1224,1225,1226,1230],{},"Natural-language-to-code loves shortcuts, and the first shortcut is usually type safety. That's a false economy. TypeScript in ",[117,1227,1229],{"href":287,"rel":1228},[121],"strict mode"," catches bugs at compile time instead of in a customer's checkout. Pair it with Zod validation and a database schema treated as a single source of truth, and refactors stop being terrifying. Vibe code without types and you're signing up for refactoring hell the first time requirements change.",[15,1232,1234],{"id":1233},"deployment-speed-is-not-shipping-speed","Deployment Speed Is Not Shipping Speed",[11,1236,1237],{},"\"Deploy to Cloud Run in minutes\" is a genuine feature. But fast-to-first-deploy and safe-in-production pull in opposite directions. A template you clone hands you parts. A kit that adapts to your interview answers hands you a wired product — and, in BoiledPlate's case, delivers it through a GitHub invite with lifetime updates. The delivery mechanism is instant; the value is that the plumbing already agrees with itself.",[15,1239,1241],{"id":1240},"when-vibe-coding-makes-sense-and-when-it-doesnt","When Vibe Coding Makes Sense (And When It Doesn't)",[11,1243,1244],{},"Be honest about fit.",[11,1246,1247,1250,1251,1256],{},[35,1248,1249],{},"Reach for Gemini AI Studio"," for prototypes, internal tools, learning projects, and quick wins. It genuinely shines here, and Google's own ",[117,1252,1255],{"href":1253,"rel":1254},"https:\u002F\u002Fai.google.dev\u002F",[121],"vibe-coding documentation"," is a good starting point.",[11,1258,1259,1262],{},[35,1260,1261],{},"Reach for agent-driven plumbing"," the moment you have billing-critical, multi-tenant, or compliance-heavy requirements. The checklist is simple: does your app need webhooks, RLS, or signature verification? If yes, you've left vibe-coding territory.",[11,1264,1265],{},"The pragmatic middle is a hybrid — vibe code the UI, then apply deterministic patches to the dangerous parts.",[15,1267,1269],{"id":1268},"the-one-time-cost-vs-subscription-trap","The One-Time Cost vs. Subscription Trap",[11,1271,1272,1273,1277],{},"\"Free and fast\" often means \"expensive to maintain.\" Free vibe-coding access still leaves you owning recurring infrastructure and — worse — the ongoing cost of code nobody wrote a contract for. BoiledPlate Pro is €159 one-time with lifetime updates and no lock-in, and if you want to start free, ",[117,1274,1276],{"href":206,"rel":1275},[121],"BoiledPlate Lite is MIT-licensed",". What you actually pay for isn't the stack — it's the agent-readable contracts, deterministic patches, and compliance encoded as code.",[15,1279,1281],{"id":1280},"the-future-of-vibe-coding-maturity-not-speed","The Future of Vibe Coding: Maturity, Not Speed",[11,1283,1284,1285,1287],{},"The trajectory is clear: from \"write code fast\" to \"write code safely.\" ",[759,1286,761],{},"-style contracts are becoming the norm, and deterministic patches are the bridge between a natural-language prompt and code you'd put in front of a paying customer. Speed got us the demo. Consistency gets us production.",[15,1289,1291],{"id":1290},"getting-started","Getting Started",[11,1293,1294,1295,1299],{},"Use Gemini when you're learning or experimenting. Use an agent-driven kit when you're shipping something with money, tenants, or regulators involved. If your vibe-coded app touches billing state, isolates user data, or verifies a webhook signature, the plumbing is your project — and it's worth reading ",[117,1296,1298],{"href":393,"rel":1297},[121],"what wiring a Nuxt, Supabase and Stripe SaaS actually demands"," before you promise a launch date.",{"title":472,"searchDepth":473,"depth":473,"links":1301},[1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315],{"id":1029,"depth":476,"text":1030},{"id":1039,"depth":476,"text":1040},{"id":1052,"depth":476,"text":1053},{"id":1084,"depth":476,"text":1085},{"id":1109,"depth":476,"text":1110},{"id":1130,"depth":476,"text":1131},{"id":1167,"depth":476,"text":1168},{"id":1185,"depth":476,"text":1186},{"id":1221,"depth":476,"text":1222},{"id":1233,"depth":476,"text":1234},{"id":1240,"depth":476,"text":1241},{"id":1268,"depth":476,"text":1269},{"id":1280,"depth":476,"text":1281},{"id":1290,"depth":476,"text":1291},"2026-07-17","Explore vibe coding with Google's Gemini: how natural language turns into working apps. Learn what's missing between impressive demos and production-ready systems.",{},"\u002Fblog\u002Fvibe-coding-gemini-production",{"title":1021,"description":1317},"blog\u002Fvibe-coding-gemini-production",[1323,1324,1325,1326],"vibe-coding","gemini","ai-development","cloud-run","9t7yKExFOOtTP4gAd2PO34EvsBA731bM-sFnHMUa4E0",{"id":1329,"title":1330,"author":6,"body":1331,"category":6,"date":1657,"description":1658,"draft":504,"extension":505,"image":6,"meta":1659,"navigation":507,"path":1660,"seo":1661,"stem":1662,"tags":1663,"__hash__":1667},"blog\u002Fblog\u002Fandrej-karpathy-vibe-coding.md","Andrej Karpathy's Vibe Coding: The Rise and Fall",{"type":8,"value":1332,"toc":1641},[1333,1336,1340,1343,1346,1349,1352,1356,1370,1373,1376,1379,1383,1386,1389,1392,1396,1399,1411,1414,1421,1425,1428,1431,1434,1438,1444,1450,1456,1462,1468,1472,1480,1483,1486,1489,1493,1496,1499,1502,1506,1509,1512,1515,1519,1522,1529,1532,1536,1539,1585,1589,1592,1595,1599,1602,1605,1608,1612,1618,1624,1630],[11,1334,1335],{},"Andrej Karpathy dropped a tweet in February 2025 that renamed how a generation of developers talked about their work. \"Vibe coding,\" he called it — fully giving in to the vibes, embracing exponentials, forgetting the code even exists. Within a year the phrase was everywhere, then it curdled into a buzzword, and by February 2026 Karpathy himself had quietly moved on. This guide traces the whole arc: what vibe coding actually meant, where it breaks, and what serious builders do instead.",[20,1337,1339],{"id":1338},"what-is-vibe-coding","What is Vibe Coding?",[11,1341,1342],{},"Vibe coding is software development where you lean on a large language model to generate code and trust its output rather than reading every line. Karpathy's framing was deliberately loose: describe what you want, accept the diff, run it, and if it works, keep going.",[11,1344,1345],{},"The core philosophy is about embracing exponential capability. Models improve fast, so why fight them with perfectionism? You prompt, you iterate, you ship.",[11,1347,1348],{},"This is a genuine break from structured, methodical coding, where every function is reasoned about and every architectural decision is deliberate. Vibe coding says: let the model hold the details, you hold the intent.",[11,1350,1351],{},"The mindset shift is real. You stop being the author and start being the director. That works beautifully — right up until it doesn't.",[20,1353,1355],{"id":1354},"the-origins-karpathys-vision","The Origins: Karpathy's Vision",[11,1357,1358,1359,1364,1365,1369],{},"The ",[117,1360,1363],{"href":1361,"rel":1362},"https:\u002F\u002Fx.com\u002Fkarpathy\u002Fstatus\u002F1886192184808149383",[121],"original post"," landed in early 2025 and spread within days. ",[117,1366,1368],{"href":528,"rel":1367},[121],"Wikipedia"," now credits Karpathy with coining the term.",[11,1371,1372],{},"What he actually meant was narrower than how it was received. His examples were throwaway projects — weekend apps, scripts, things where a bug just meant asking the model to fix it. The point was fun, not recklessness.",[11,1374,1375],{},"The misinterpretation came fast. \"Vibe coding\" got read as license to ship production software without understanding it. That is not what the phrase was built to carry.",[11,1377,1378],{},"Context matters. In early 2025, AI coding was good enough to feel magical and immature enough to fail silently. Vibes filled the gap between capability and reliability.",[20,1380,1382],{"id":1381},"how-vibe-coding-actually-works-in-practice","How Vibe Coding Actually Works in Practice",[11,1384,1385],{},"In practice, vibe coding is a rhythm: prompt, read the result loosely, run it, correct with another prompt. You stay in flow, and the LLM absorbs the tedium.",[11,1387,1388],{},"The skill is knowing when to override the vibe. If the output touches money, auth, or user data, you stop vibing and start reading. If it's UI scaffolding or a data transform, you let it ride.",[11,1390,1391],{},"Tools like Cursor and Claude made this possible, but the real enabler was architectural: choosing a stack and conventions the model already understands well. A model vibes better inside familiar terrain.",[20,1393,1395],{"id":1394},"vibe-coding-meets-production-reality","Vibe Coding Meets Production Reality",[11,1397,1398],{},"Vibes carry you through scaffolding. They collapse at the plumbing.",[11,1400,1401,1402,1405,1406,1410],{},"We learned this building ",[117,1403,289],{"href":287,"rel":1404},[121],", where the stack was the easy part and the wiring ate the weeks. As we argued in ",[117,1407,1409],{"href":119,"rel":1408},[121],"how to ship SaaS fast",", the framework picks itself — Stripe verification, row-level security, and idempotency are where launches actually stall.",[11,1412,1413],{},"You cannot vibe your way to a signature-verified webhook. Cryptographic correctness is binary. Full vibe coding fails at scale because the failures are silent: a user sees someone else's data, a subscription state drifts, a webhook fires twice.",[11,1415,1416,1417,1420],{},"What helps is structure. Building SaaS with agents requires contracts — an ",[117,1418,761],{"href":300,"rel":1419},[121]," file that documents one way to do data access and secrets, so the agent stays consistent instead of inventing a fourth pattern.",[20,1422,1424],{"id":1423},"the-karpathy-pivot-why-he-moved-on-february-2026","The Karpathy Pivot: Why He Moved On (February 2026)",[11,1426,1427],{},"By February 2026, Karpathy had publicly declared vibe coding outdated. His reasoning: LLMs got smart enough that \"vibes\" was no longer the right word for what good AI-assisted development looked like.",[11,1429,1430],{},"The landscape had matured. Models could follow explicit conventions, apply structured edits, and reason about architecture. The loose, forget-the-code-exists ethos felt incomplete against that.",[11,1432,1433],{},"His pivot signals something bigger: AI development grew up. The frontier moved from \"trust the model\" to \"constrain the model well.\" The industry got stuck arguing about the word \"vibe\" while the actual evolution was happening in tooling and contracts.",[20,1435,1437],{"id":1436},"five-different-approaches-to-vibe-coding","Five Different Approaches to Vibe Coding",[11,1439,1440,1443],{},[35,1441,1442],{},"Pure vibes."," Full trust, minimal oversight. Great for scripts and prototypes. Fails predictably for anything with real users.",[11,1445,1446,1449],{},[35,1447,1448],{},"Vibes with guardrails."," Prompting combined with deterministic patches and schema validation, so the model's output gets checked before it lands.",[11,1451,1452,1455],{},[35,1453,1454],{},"Vibe coding for architecture."," Use agents to design systems and explore options, then let humans wire the sensitive plumbing by hand.",[11,1457,1458,1461],{},[35,1459,1460],{},"Agent-native development."," Build around an AGENTS.md contract so agents produce consistent output across months, not just across a single session.",[11,1463,1464,1467],{},[35,1465,1466],{},"Post-vibe coding."," Structured prompting, explicit contracts, deterministic outputs. This is the direction Karpathy's pivot points toward.",[20,1469,1471],{"id":1470},"vibe-coding-vs-deterministic-coding","Vibe Coding vs. Deterministic Coding",[11,1473,1474,1475,1479],{},"The problem with vibes alone is drift. An agent given three ways to fetch data will ",[117,1476,1478],{"href":300,"rel":1477},[121],"cheerfully add a fourth",", because it has no reason to prefer yours.",[11,1481,1482],{},"Drift costs rework. Every time LLM output diverges from your conventions, someone has to notice, refactor, and re-explain — often the agent itself, badly.",[11,1484,1485],{},"Deterministic patches and semantic contracts prevent this decay. Instead of hoping the model matches your style, you encode the style as rules it must follow.",[11,1487,1488],{},"The concrete cases make it obvious: webhook idempotency, RLS policies, and multi-language i18n are all places where \"close enough\" is a bug. There are five places a new locale string has to land before the build stops complaining, and vibes will find four of them.",[20,1490,1492],{"id":1491},"the-business-case-vibe-coding-in-startup-context","The Business Case: Vibe Coding in Startup Context",[11,1494,1495],{},"The speed gains from vibes are real and measurable — for the first mile. Scaffolding a landing page, a dashboard shell, a data model happens in minutes now.",[11,1497,1498],{},"Then the curve inverts. The weeks you saved on scaffolding get spent debugging the plumbing vibes couldn't handle. Founders who track this honestly land on the same rule: vibes for the MVP, structure for scale.",[11,1500,1501],{},"Karpathy's 2025 enthusiasm faded by 2026 partly through survivorship filtering. The demos that went viral were the ones that worked. The vibe-coded projects that quietly died in production billing bugs didn't trend.",[20,1503,1505],{"id":1504},"is-vibe-coding-dead","Is Vibe Coding Dead?",[11,1507,1508],{},"The buzzword trap killed the term more than the technique. Once every tool marketed itself as \"vibe coding,\" the phrase meant nothing.",[11,1510,1511],{},"What survived is the useful core: describe intent, let the model do the mechanical work, iterate fast.",[11,1513,1514],{},"What changed is the emphasis. LLMs are smarter, so the need for \"vibes\" shifted to \"conventions.\" The real skill now is judgment — knowing when to trust the agent and when to enforce determinism.",[20,1516,1518],{"id":1517},"the-anti-hype-take-what-developers-actually-need","The Anti-Hype Take: What Developers Actually Need",[11,1520,1521],{},"Here's the uncomfortable read: vibe coding solved the wrong problem. It framed the challenge as attitude — loosen up, trust the model — when the challenge was actually tooling.",[11,1523,1524,1525,858],{},"The real innovation was never vibes. It was agent-readable contracts: AGENTS.md, structured prompts, deterministic provisioning. Every starter that ships the stack misses the point; ",[117,1526,1528],{"href":133,"rel":1527},[121],"the stack was never the hard part",[11,1530,1531],{},"Starter kits with strong conventions beat pure vibes because they give the agent a floor. Building SaaS the way Karpathy now implies means structure plus AI, not vibes plus hope.",[20,1533,1535],{"id":1534},"technical-specifics-where-vibes-fail","Technical Specifics: Where Vibes Fail",[11,1537,1538],{},"Some things simply do not bend to attitude:",[312,1540,1541,1552,1558,1564,1575],{},[174,1542,1543,1546,1547,1551],{},[35,1544,1545],{},"Webhook signature verification."," You cannot vibe cryptographic correctness. See our writeup on treating ",[117,1548,1550],{"href":1149,"rel":1549},[121],"the GitHub invite as the product",", where some failures must throw and some must never.",[174,1553,1554,1557],{},[35,1555,1556],{},"Row-level security."," RLS is explicit, not emergent. A missing policy is a data breach, not a rough edge.",[174,1559,1560,1563],{},[35,1561,1562],{},"Idempotent transactions."," The two-generals problem doesn't care how confident your prompt sounded.",[174,1565,1566,1569,1570,1574],{},[35,1567,1568],{},"Consent flows."," ",[117,1571,1573],{"href":274,"rel":1572},[121],"German withdrawal law"," has specific requirements you encode into the pay button, or you don't sell legally.",[174,1576,1577,1569,1580,1584],{},[35,1578,1579],{},"Billing state.",[117,1581,1583],{"href":261,"rel":1582},[121],"Stripe webhooks are the source of truth",", not the optimistic client-side success page.",[20,1586,1588],{"id":1587},"tools-and-patterns-for-post-vibe-coding","Tools and Patterns for Post-Vibe Coding",[11,1590,1591],{},"This is exactly what BoiledPlate encodes: the lessons of vibe coding turned into structure. Instead of vibing through setup, an agent-driven interview provisions Stripe products and webhooks, a Supabase database with RLS, and Google sign-in in one session — deterministically.",[11,1593,1594],{},"The AGENTS.md contract is the evolution of vibes into something a machine can read and honor. And semantic, agent-readable release notes let agents apply updates consistently instead of guessing.",[20,1596,1598],{"id":1597},"lessons-for-the-next-wave-of-ai-coding","Lessons for the Next Wave of AI Coding",[11,1600,1601],{},"Vibe coding was a necessary phase, not the destination. It taught developers that intent-first workflows are faster — and that unstructured trust doesn't survive production.",[11,1603,1604],{},"Karpathy's pivot tells us where things head: verification over trust, contracts over vibes. The skills that will matter are prompt engineering, contract design, and knowing what to check.",[11,1606,1607],{},"The best AI-native code, it turns out, looks less like vibes and more like highly structured conventions a model can follow without drifting.",[20,1609,1611],{"id":1610},"faq-common-misconceptions-about-vibe-coding","FAQ: Common Misconceptions About Vibe Coding",[11,1613,1614,1617],{},[35,1615,1616],{},"Does vibe coding mean no testing?"," No. The durable version is vibes plus verification — generate loosely, validate strictly.",[11,1619,1620,1623],{},[35,1621,1622],{},"Is Karpathy saying not to use LLMs?"," The opposite. Use them heavily, but with determinism and explicit constraints.",[11,1625,1626,1629],{},[35,1627,1628],{},"Can I ship production SaaS on vibes alone?"," Not sustainably. The plumbing — billing, security, compliance — demands structure.",[11,1631,1632,1635,1636,1640],{},[35,1633,1634],{},"What's the successor to vibe coding?"," Agent-native development built on contracts. Start from ",[117,1637,1639],{"href":206,"rel":1638},[121],"a boilerplate designed for agents"," rather than vibing the wiring yourself.",{"title":472,"searchDepth":473,"depth":473,"links":1642},[1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656],{"id":1338,"depth":473,"text":1339},{"id":1354,"depth":473,"text":1355},{"id":1381,"depth":473,"text":1382},{"id":1394,"depth":473,"text":1395},{"id":1423,"depth":473,"text":1424},{"id":1436,"depth":473,"text":1437},{"id":1470,"depth":473,"text":1471},{"id":1491,"depth":473,"text":1492},{"id":1504,"depth":473,"text":1505},{"id":1517,"depth":473,"text":1518},{"id":1534,"depth":473,"text":1535},{"id":1587,"depth":473,"text":1588},{"id":1597,"depth":473,"text":1598},{"id":1610,"depth":473,"text":1611},"2026-07-16","Explore vibe coding, Andrej Karpathy's controversial approach to AI-assisted development. Understand what it means, where it breaks, and serious alternatives.",{},"\u002Fblog\u002Fandrej-karpathy-vibe-coding",{"title":1330,"description":1658},"blog\u002Fandrej-karpathy-vibe-coding",[512,1664,1665,1666],"andrej karpathy","ai development","software engineering","SACUbmvSS-AaQ5e5rFj_7Tzsc3NC1Ldhz-Gf4C2uvSs",1784422316840]