Building Production Apps with Vibe Coding: Ideals vs Reality

Can vibe coding produce production-ready apps? Real experience from indie development on what works, what doesn't, and why engineering judgment still matters.

What Is Vibe Coding?

Vibe coding is a development approach where you describe what you want in natural language and let AI generate the code. Coined by Andrej Karpathy in 2025, it marked a paradigm shift from “writing code” to “having AI write code.”

So, can you build a production app with vibe coding? The answer is: yes, with conditions.

The Ideal: Ship with Natural Language Alone

The dream version of vibe coding looks like this:

  1. Describe what you want to build in plain language
  2. AI generates the code
  3. Verify it works, deploy

And for simple web apps or prototypes, this actually works. The promise that non-programmers can build apps is half-realized.

The Reality: Production Has Walls

But building something people pay money for is a different story.

Where Vibe Coding Works Well

Use CaseWhy
Prototypes and MVPsSpeed matters more than polish
Internal toolsLimited users, relaxed quality bar
Static sites and landing pagesMinimal logic, mostly visual
Single-purpose utilitiesNarrow scope

Where It Falls Short

Use CaseWhy
Complex state managementAI struggles to maintain consistency across the whole system
Security-critical featuresRisk of gaps in auth and authorization
Performance optimizationAI defaults to “code that works” over “code that’s fast”
Long-term maintenanceInconsistent patterns accumulate over time

Real Experience at R3O Works

I’m building Shutter, a note-taking app. I use vibe coding extensively, but it’s not the only thing I use.

Where vibe coding delivered:

  • Generating UI components (describe the design in words, get code)
  • Scaffolding API endpoints
  • Generating comprehensive test cases
  • Auto-generating docs and comments

Where human judgment was essential:

  • Database design (normalization levels, indexing strategies)
  • Security architecture (auth flows, token management)
  • Technology stack decisions
  • Identifying and resolving performance bottlenecks

By feel, 60 – 70% of the work can be covered by vibe coding. The remaining 30 – 40% is what determines product quality.

The Challenges: Testing, Security, Maintainability

Code generated through vibe coding has recurring issues.

Testing: AI is good at writing code that works. It’s less good at writing code that doesn’t break. Edge cases get insufficient attention, and test coverage tends to be shallow. Test design needs human leadership.

Security: AI will add textbook defenses like SQL injection prevention and XSS protection. But it misses context-dependent vulnerabilities – authorization gaps rooted in business logic, for example. Security review is non-negotiable.

Maintainability: When you combine code generated in different contexts, naming conventions and architectural consistency erode. Regular refactoring and project-wide rules (linters, coding standards) are essential.

Conclusion: AI Is the Weapon, Judgment Is the Armor

Vibe coding is a powerful weapon. Development speed increases dramatically. Building a production app solo is genuinely possible.

But without engineering judgment, vibe coding alone creates invisible debt. The ability to evaluate AI-generated code quality, ensure security, and make decisions about long-term maintainability – that’s the prerequisite for using vibe coding in production.

AI is the weapon that accelerates development. Engineering judgment is the armor that protects the product. You need both to ship something real.

See Shutter’s product page | What is AI-native development? | Learning marketing from zero