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:
- Describe what you want to build in plain language
- AI generates the code
- 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 Case | Why |
|---|---|
| Prototypes and MVPs | Speed matters more than polish |
| Internal tools | Limited users, relaxed quality bar |
| Static sites and landing pages | Minimal logic, mostly visual |
| Single-purpose utilities | Narrow scope |
Where It Falls Short
| Use Case | Why |
|---|---|
| Complex state management | AI struggles to maintain consistency across the whole system |
| Security-critical features | Risk of gaps in auth and authorization |
| Performance optimization | AI defaults to “code that works” over “code that’s fast” |
| Long-term maintenance | Inconsistent 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