Tag Archives: cursor

🚀 One Month with Vibe Coding: Building Real Apps with AI Assistants

Over the past few months, Vibe coding has been gaining serious traction—and I couldn’t resist diving in myself. I’ve been using AI coding assistants for a while, but I wanted to go deeper and really test what these tools can do in a realistic, end-to-end software development project.

So, I spent the last month building a full-featured ecommerce web and mobile app using some of the most talked-about Vibe coding platforms: Cursor, Windsurf, Lovable, Bolt, and Replit. It was a fun and empowering journey—there’s a real sense of accomplishment in being able to build software applications on your own. I also learned that working with the current generation of tools definitely requires a good deal of patience.

In this blog, I’ll walk you through:

  • My experience building and deploying the applications
  • What worked, what didn’t, and what broke halfway 😅
  • How each tool stacks up in terms of usability, flexibility, and reliability
  • Whether tools like these mean we still need software engineers (spoiler: yes—but it’s complicated)
  • Where I think this whole Vibe coding trend is heading next

🌍 Coding Assistant Landscape: Then vs Now

AI coding assistants have come a long way. Here’s a quick look at how things evolved:

⏰ The Old School

  • Classic autocomplete tools like IntelliSense or TabNine helped speed up typing but weren’t context-aware.
  • Low-code/no-code platforms (e.g., Bubble, Wix, Zapier) let users drag and drop components, but required scripting for anything complex.

🧠 The New Era: Vibe Coding

  • Powered by LLMs (Large Language Models)
  • Can write, refactor, debug, and deploy apps using natural language queries
  • Opens the door for non-developers to build apps
  • Empowers developers to skip boilerplate and focus on design, logic, and systems thinking

💡 What is Vibe Coding?

Vibe coding refers to using AI-powered tools to build software via natural language prompts, mixed with lightweight manual coding. It’s all about staying in the flow and letting the assistant do the heavy lifting.

💡 The Experiment

Although I started my career as a developer, I haven’t been actively coding in the last decade. Instead, I’ve focused on architecture, reviews, testing, and product design. That said, I wanted to push these Vibe tools beyond simple demos or prototypes.

So, I picked a moderately complex use case: an Ecommerce application with a web frontend and mobile app, complete with backend, auth, payment, and roles.

✨ Features Implemented

- User authentication (sign-up, login, password reset, Google login)
- Roles: Admin, Seller, Customer
- Admin: manage users, view orders, seller capabilities
- Seller: add products
- Customer: browse catalog, filter/sort, add to cart, checkout
- Order history
- Payment integration with Razorpay

🚀 Tech Stack Used

Frontend: React
Backend: Node.js + Express
Database: MongoDB
Deployment: Vercel / Render / Netlify depending on tool

🏗️ Environments

- Web app
- Mobile app (via Expo)
- Both local and production deployments

🔧 Tool-by-Tool Breakdown

Each tool was tested with the same requirements and judged based on ease of use, flexibility, ability to debug, and ability to deploy real features.

🧪 Cursor

🛠️ Plan: Paid ($20)

💻 Used With: MongoDB Atlas, Render/Vercel for deployment, Claude 3.7 model

Highlights:

  • Full tech stack flexibility
  • Supports both web and mobile
  • Git & database migration support
  • Wrote unit tests and debugged APIs
  • Workflow suits developers

⚠️ Challenges:

  • Terminal tracking is weak
  • Frequent application crashes
  • Manual debugging needed

📦 Artifacts:

Windsurf

🛠️ Plan: Free and Paid version

💻 Used With: Claude 3.7 & Gemini, Vercel/Render for cloud, Cloudinary for images

Highlights:

  • Better terminal/session management
  • Console log debugging is stronger

⚠️ Challenges:

  • Hard to course-correct from incorrect assumptions
  • Hit credit limits fast (Ran out of credits with paid version in 3 days)

📦 Artifacts:


⚡ Bolt

🛠️ Plan: Free

💻 Used With: React + Vite, Supabase, Netlify

Highlights:

  • Blazing fast startup because it runs as web container
  • Fully in-browser

⚠️ Challenges:

  • Can’t run backend services (e.g., Express, MongoDB) because of running as web container
  • Not suitable for full-stack use cases

📦 Artifacts:

  • Incomplete app prototype (Ran out of free credits)

😍 Lovable

🛠️ Plan: Free and then Paid ($20)

💻 Used With: React + Supabase, auto-deploy on Lovable Cloud

Highlights:

  • Very easy to use
  • Seamless production deployment

⚠️ Challenges:

  • Slower code generation speed

📦 Artifacts:

🛠️ Replit

🛠️ Plan: Free

💻 Used With: Ghostwriter AI, browser IDE, MongoDB Atlas

Highlights:

  • Easy to set up
  • Great for fast testing

⚠️ Challenges:

  • Cloud-only with less system-level flexibility
  • Not ideal for large production apps

📦 Artifacts:

  • Did not complete(ran out of free credits)

📊 Tool Comparison Snapshot

FeatureCursorWindsurfReplitLovableBolt
Ease of UseMediumMediumEasyEasyEasy
Dev EnvironmentLocalLocalCloudCloudCloud
Deployment OptionsManualManualBuilt-inBuilt-inManual
Tech Stack FlexibilityHighHighMediumLimitedLimited
Target UsersDevsDevsAllNon-devsNon-devs

🧠 My Take: Cursor gives you the most power; Lovable gives you the most convenience.

❌ What Needs Work

🛠️ Debugging:

Most tools still rely on you reading console logs and piecing things together manually. (My pick: Use Operator framework to understand what’s happening in browser and fix issues automatically)

🐌 Speed:

Long wait times and retries can break the flow.

🧩 Fragility:

Small changes can break other parts of the app. There’s no real “awareness” of architectural dependencies.

📐 Lack of modularity:

Encouraging reusable design and clean code still needs a human architect.

📘 Pro Tips: Making Vibe Coding Work

📋 Define clear requirements

Roles, pages, workflows, error states — lay it all out before prompting.

🧭 Use guardrails (rules/constraints)

Many tools let you enforce language, style, and folder structure.

🎯 Stick to common stacks

React, Node, Python, SQL — that's where LLMs shine.

💡 Use models wisely

Claude 3.7 was the most consistent for me, especially on multi-step flows. Experiment with models and find the best one for your use case.

🧪 Debug like a dev

Logs > terminal > DB traces. Be ready to dive in.

🔄 When stuck, reboot

Sometimes starting fresh saves more time than untangling broken AI logic. Keep regular checkpoints to go back to stable point. 

🧠 Is Software Engineering Dead?

Nope. But it’s definitely shifting.

🧠 What Vibe Coding Does Well:

  • Speeds up boilerplate
  • Empowers solo builders
  • Makes prototyping fast

🚧 What It Still Needs Help With:

  • Scaling apps
  • Clean architectures
  • Advanced debugging
  • Enhancing existing production apps

🧑‍💻 Developers won’t disappear. They’ll evolve. The future engineer:

  • Uses AI to generate & validate code fast
  • Designs smart systems
  • Oversees quality, reusability, and security

💬 “It’s not about coding less. It’s about coding smarter.”