
I discovered vibe coding a while back, but until recently, I hadn’t used it for a real project - just some casual experimenting.
Over the weekend, I decided to build a simple business app that logs documents and make their information available via QR code.
Here's what I learned.
First off, vibe coding is the concept of coding using English as a language. You just tell an AI agent what you want to build and watch it happen.
I use Replit to vibe code as it's a platform that requires no configuration or setup effort at all.
Like any AI tool, you need to prompt Replit with the most detailed instructions to get the best outcome.
I started by writing down the project context, its objective, the workflows needed, and some specific app requirements.
Next, I fed these details to ChatGPT, asking it to create a full Business Requirements Document (BRD). (Thanks Ammar Mohanna, PhD for the inspiration.)

I reviewed the BRD which was quite comprehensive - typical ChatGPT quality - and I uploaded it to Replit as a guide to develop the app.
Replit built the whole app in less than 10 minutes. Impressive, to say the least.
I just watched as it explained what it was doing. I could have grabbed a coffee or sent a couple of emails in the meantime; nothing was needed from me.
The app had 90% of the original requirements. I asked Replit to add the missing parts, and it did so efficiently.

While checking the different sections of the app, I noticed that a button was missing on the most recent operation item. It should have been visible on each operation item.
I asked Replit to fix the issue, and this is where frustration started to pile up.
The scenario went like this:
Me: "The button is not showing, fix the issue."
Replit: "I can see the issue! Looking at the [specific component] code, I notice that [this assumption should have held true but has not].
Great! I've made the necessary fixes to ensure the button always appears."
Me: "It's still not fixed."
Replit would then make another assumption, fix a non-issue, and get to the same result.
This loop continued for 10 iterations, and I started losing my patience. At that point, I decided to check the issue myself.
Looking at the screen, I found an almost transparent banner hiding the button. The code was correct, but the banner needed to be adjusted.
I pointed this out to Replit, and it fixed it.
This end-to-end project experience taught me that vibe coding requires two things: technical know-how and patience.
Replit felt like an overconfident developer who could write code at lightning speed, but sometimes missed requirements.
When it was trying to fix a bug, I had to point out some of the typical issues I’ve faced during years of working with developers: clearing the cache, restarting the app, regression testing, etc.
I’m not sure people without a technical background could have figured it out. You also have to pay close attention to the changes being made, as they sometimes may not make sense.
The debugging phase was draining. I had to repeat myself over and over again to get to the ultimate fix.
What’s more frustrating is Replit’s overconfidence: it always believes - and makes you believe - that it found the issue and fixed it, only to discover that the problem persisted.
This kind of interaction is in deep contrast with its impressive initial output, and it drove my frustration up very quickly.
If you want to vibe code an app, follow this step-by-step guide:
Despite the draining experience to fix simple issues, you should still consider AI as a developer who can get things done for you 100x faster than humans - whether it's a prototype, a proof of concept, or a simple MVP.
I'm sure the performance of vibe coding will get better with time. It might one day (soon?) allow for creating production-level code.

Book a call and get matched with engineers in 24–72h.