top of page
  • Linkedin
  • GitHub

Vibe Coding My Way to Production: A Tale of LLMs, Coffee, and Mild Frustration

  • Writer: Tommaso Pardi
    Tommaso Pardi
  • Apr 12
  • 4 min read

As a robotics software engineer, I’m usually knee-deep in systems and logic, but recently I set out on a different kind of challenge—building a fully functional full-stack app using an LLM as my development partner. My approach? Light on stress, heavy on clarity, and absolutely no-code-written mantra. Claude handled it all.

Here’s how it went—equal parts productive and unpredictable, with just enough humour to keep things moving.



A coffee cup created by human and AI working together

The Vibe Coding Setup: From Concept to Code

My goal was clear: build a production-ready app; but not technical constraints given. I wanted to see how far I could push an LLM like Claude in handling the workflow from planning to deployment, and the proposed approach resulted in a React frontend, a Node.js backend, and a MongoDB database (not what I would have chosen but let's go..).


The process looked like this:

  1. Describe the App + PRDI gave Claude a simple rundown—users can sign up, post things, view things, and the app shouldn't crash. From that, I asked for a markdown-based PRD, skipping timelines to keep things flexible. Claude returned a neat, structured doc with user flows, features, and a suggested stack.

  2. Generate TODOsNext, I had Claude break the project into specific TODO lists for each area: frontend, backend, deployment. These lists helped me stay organized, with tasks like “build a login form with validation” or “set up CORS middleware.”

  3. Define Good PracticesTo avoid tech debt, I worked with Claude to define some coding standards: ESLint, Prettier, RESTful routes, modular structure. Most importantly, I skipped manual testing frameworks and let Claude handle generating test code. Risky? Maybe. But it kept the momentum going.


The Build: Frontend Struggles, Backend Wins, Testing Progress


Frontend: Functional, But Lacking Flair

I started with templates to speed things up, but even with Claude’s help, the UI came out... gne (technical term for uninspired). Tailwind CSS made layout fast but styling never really clicked. It worked, but it didn’t wow (and sometimes even off). Turns out, design is still very much a human thing. Claude nailed the logic and structure but fell short on aesthetic polish.


Backend: Surprisingly Smooth

This was where Claude really shined. Setting up Express, routing, MongoDB—no problem. I’d request an endpoint and get clean, functional code, complete with error handling and comments. It felt like collaborating with a capable junior dev who doesn’t need coffee breaks.


Testing: Rough Start, Solid Finish

Letting Claude handle testing took some trial and error, especially for edge cases. But once the format was locked in, it saved loads of time. I quickly had coverage for APIs and components, cutting down on boilerplate while still catching issues. Not perfect, but efficient.

After stitching everything together, I Dockerized the app and deployed it locally, I might try to go to Render using its free tier later on. The final product? A live app where users can sign up, post, and browse content. Functional, stable, and good enough to call done.


Reflections: What Worked and What’s Next


LLMs Are Only Getting Better

Claude did a respectable job—structured, readable, and mostly correct. Considering we’re still in the early days of AI-assisted development, that’s impressive. If this is the baseline, the future of code generation looks promising.


Cost: It Adds Up

I used the free tier for most of this, but the volume of requests—PRDs, TODOs, tests, code snippets—stacked up fast. For a small project, it’s manageable. For a larger system, you'd definitely want to keep an eye on usage or explore dedicated APIs with pricing plans that make sense for your workflow.


Is Vibe Coding Sustainable?

The real question is: can another dev jump in later and maintain this code? I’d say yes, assuming you ask the LLM to document and comment clearly along the way. With enough structure, this approach produces understandable, handover-ready code. You just need to treat the LLM like a collaborator, not a black box.


Will This Approach Last?

There’s a lot of buzz around vibe coding right now—generate, iterate, ship. In six months? I think it’ll be more refined and better integrated into existing workflows, not gone. But as tools evolve, expectations will too. You’ll still need judgment and taste, especially in UI and architecture decisions.


Final Takeaways

This experiment was a solid proof-of-concept. With the right prompts and a few guiding principles, I was able to build and ship a full-stack app in a fraction of the time it would normally take. The backend was painless, the frontend needed finesse, and the testing ended up being a huge win once the format was locked in.

Would I do it again? Absolutely. But next time, I’ll be more opinionated on the design side—and maybe automate even more of the boilerplate. Vibe coding isn’t about cutting corners. It’s about staying in flow and letting the tools do the heavy lifting where they can.

The future of software might not be “no code,” but it might just be “co-code.”


Now it's time for a new coffee...until next time!

Recent Posts

See All

Comentarios


CONTACT

© 2025 beyond

bottom of page