Posted on: 10 03 2026.
Vibe Coding in the Real World

What We’ve Learned Using GitHub Copilot, Cursor, and Lovable AI
We’ve been hands-on with GitHub Copilot, Cursor, and Lovable AI across multiple internal projects. Here’s the practical truth: „vibe coding“ (AI-assisted building with minimal ceremony) is a powerful accelerator – for the right moments. It won’t replace production engineering. But it fundamentally changes how quickly you can explore, validate, and iterate.
Where Vibe Coding Shines
Build MVPs in Hours, Not Weeks
Before vibe coding, even testing an idea often required weeks of planning and a meaningful budget. Today, a working MVP can be built in an afternoon. That translates into:
- Faster feedback loops
- Quicker iteration
- Smarter go/no-go decisions
Move Faster, Pivot Smarter
Vibe coding enables rapid market testing, quick pivots based on customer feedback, and more selective investment of engineering resources. It’s a lower-risk, more agile path to innovation.
Empower Internal Teams
Need a custom reporting dashboard? An onboarding tool? A resource scheduler?
Vibe coding allows non-technical teams to build lightweight internal apps that address specific pain points – without immediately involving a full development team.
Level the Playing Field for Founders
The broader impact is structural:
- More ideas get tested
- More small businesses get a chance
- More diverse founders can validate concepts early
For investors, early working prototypes mean clearer evaluation and smarter funding decisions.
The Limits: What Vibe Coding Can’t (Yet) Replace
A natural question arises:
If something that once required a five-figure budget can now be built in an afternoon, are software professionals being coded out of a job?
The short answer: no.
Vibe coding changes when and why you bring in professional developers – not whether you need them.
Scalability Becomes a Bottleneck
Prototype-grade systems work well for demos. But once you need real users, API integrations, payment flows, high availability, monitoring and observability – you will quickly reach architectural limits. Growth and complexity still require experienced engineers.
Quality Still Requires Human Judgment
AI does not fully understand edge cases, regulatory constraints, or subtle business rules.
Production-grade software requires:
- Thoughtful architecture
- Strong testing strategy
- Code review discipline
- Long-term maintainability
That remains human territory.
Security Is Not “Baked In”
The moment you handle user data, even something as simple as an email address, you enter legal and ethical territory. Most vibe-coded apps are not designed with:
- Hardened authentication flows
- Proper data storage policies
- Granular access controls
That’s not a flaw – it’s simply not their primary purpose. Public-facing systems require professional-grade security.
Bottom Line: Vibe coding changes the game – but not the players. With Copilot, Cursor, and Lovable AI, we ship ideas faster, learn sooner, and invest smarter. When it’s time to scale, secure, and sustain, engineers step in with the discipline that turns prototypes into durable products.
Levels & Typical Use Cases Across the Lifecycle
AI coding assistants and live „AI co-dev“ patterns can support nearly every stage of the software lifecycle – from greenfield ideas to line-level edits.
(Your lifecycle list is strong; only minor wording clean-up below.)
1.
Greenfield MVPs (New Products)
- Rapid scaffolding (repos, CI, Docker, project structure)
- Initial data models, API skeletons, auth flows
- “Walking skeleton” end-to-end path
2.
Prototypes for New Features (Existing Products)
- Clickable UI mock + stubbed backend
- Alternative design spikes to de-risk implementation
- Quick A/B implementations
3.
Architecture & Design Aids
- Convert product brief → ADRs, sequence diagrams
- Generate contracts, DTOs, error maps
- Suggest boundary placement (DDD)
4.
Repository Onboarding & Exploration
- “Explain this codebase”, ownership maps, call graphs
- Generate high-level READMEs
- Identify dead code or duplicate logic
5.
Extending Modules
- Add endpoints, CLI options, feature flags
- Wire dependencies and adapters
- Update schemas + migrations coherently
6.
Defect Triage & Fixing
- Reproduce from logs/tests
- Suspect commit analysis
- Propose patch + unit test
7.
Refactoring & Modernization
- Extract methods, split classes, reduce cyclomatic complexity
- Framework/library upgrades (e.g., v1→v2 API changes)
- Convert legacy patterns (callbacks→async, OOP→FP)
8.
Testing at Scale
- Unit/integration test generation with meaningful fixtures
- Property-based tests, boundary & error-path coverage
- Golden tests for APIs and serialization
9.
Performance & Reliability
- Hot-path profiling suggestions, query plan fixes
- Caching layers, pagination, back-pressure
- Resiliency patterns (retries, timeouts, circuit breakers)
10.
Security & Compliance
- Surface insecure patterns (SQLi, XXE, JWT misuse)
- Secrets detection & rotation scripts
- License scans, SBOM, policy gates
11.
DevOps / CI-CD / IaC
- GitHub Actions/Azure DevOps pipelines
- Docker files, Helm charts, Terraform modules
- Release notes, changelog automation
12.
Data engineering & migrations
- ETL/ELT jobs, dbt models, CDC wiring
- SQL migrations with rollback plans
- Test data synthesis and anonymization helpers
13.
Docs & developer experience
- API docs from code/comments, OpenAPI/Swagger
- Migration guides, runbooks, troubleshooting trees
- Contributor guide, PR templates, CODEOWNERS
14.
Localization & accessibility
- i18n key extraction, pluralization checks
15.
Support tooling & scripts
- One-off maintenance scripts, data fixes
- Log parsers, observability queries (PromQL, SQL)
„Live“ Co-Dev Patterns You Can Adopt
- Pairing mode: Keep the assistant in the IDE to co-author functions and tests as you navigate
- Planner mode: Ask for a step-by-step task breakdown before coding, then execute sequentially
- Reviewer mode: Have it propose diffs and comments before human review
- Ops buddy: Generate or modify CI, IaC, dashboards, and alerts from concise prompts
Guardrails (Use These Everywhere)
- Spec first: Provide a short spec (inputs, outputs, error cases) before generating code
- Constrain context: Point to exact files or modules; avoid dumping the entire repo
- Always add tests: Require at least one failing test before a fix or refactor
- License & secret hygiene: block disallowed licenses (e.g., GPL-3.0) from entering your build; detect leaked tokens/keys in PRs
- Human review: Treat AI output like a junior developer’s PR – review, run, and measure.
Greenfield MVP
USE CASE
Greenfield MVP in Action – Equine Data Management Platform
We built a full-stack Equine Data Management Platform from scratch. Starting with only a product brief, we rapidly scaffolded a .NET 8 backend (ASP.NET Core + EF Core), a Blazor Hybrid desktop app, and a .NET MAUI mobile app – all sharing a common domain model.
AI assistance accelerated:
Project setup: Auto-generated solution structure, Docker configuration, and CI-ready project files
Core models & DbContext: Defined Horse, Race, and MareListEntry with proper relationships and precision constraints
REST API: Full CRUD controllers with pagination, filtering, and Swagger documentation
Frontend scaffolding: Reusable Blazor pages and MAUI views with authentication and state management
Seeding & testing: Realistic sample data (50+ horses, pedigrees, races) for immediate demo readiness
The result: A production-structured MVP running end-to-end on day one, supporting offline mobile use and Azure-ready deployment – demonstrating how vibe coding enables rapid validation of complex domain applications without compromising architectural integrity.
Here’s an opinionated scorecard for Greenfield MVPs (new products), comparing GitHub Copilot, Cursor, and Lovable AI. We focus on what matters most: speed to demo, full-stack scaffolding, flexibility, deployment path, governance, and cost control.
- Dev-led MVP: Cursor → Fastest from blank repo to working app; best for multi-file edits and model choice
- Non-coder or design-led MVP: Lovable AI → Fastest UI + backend from a prompt; deployable out of the box
- Enterprise-governed MVP inside an existing toolchain: GitHub Copilot → Safest default with deep IDE and GitHub integration; pair with your own templates
Scorecard (5 = strongest)
| Dimension (for MVPs) |
GitHub Copilot |
Cursor |
Lovable AI |
| Overall fit (dev-led MVP) |
4 |
5 |
4 |
| Speed to first demo |
4 |
5 |
5 |
| Full-stack scaffolding from scratch |
3 (needs your templates) |
5 (multi-file agent & edits) |
5 (“build apps by chatting with AI”) |
| Flexibility / custom stack freedom |
5 |
5 |
3–4 (more opinionated flows) |
| Model choice / tuning |
3 (abstracted in Copilot) |
5 (pick models; usage-metered) |
3–4 (platform-managed) |
| Code ownership & export |
5 (your repo) |
5 (your repo; code is yours) |
4–5 (GitHub export exists; check plan/flow) |
| Deployment path (prod-ready) |
4 (you own CI/IaC) |
5 (easy to generate infra/code) |
4 (quick hosted deploys; verify prod needs) |
| Enterprise governance (SSO, policy, IP) |
5 (mature enterprise controls) |
4 (team controls improving) |
3–4 (fast-moving; evaluate security posture) |
| Cost predictability |
4 (seat-based + premium requests) |
4 (plan + usage at API rates) |
3–4 (plan + usage; watch prompts/builds) |
| Learning curve |
5 (native IDEs) |
4 (VS Code-like but different app) |
5 (chat-to-app) |
What to Pick (by Situation)
- Small dev team starting from zero: It understands your codebase, edits multiple files coherently, and builds large chunks quickly. You retain repo ownership and can switch models as needed.
- Clickable MVP needed this week, and the lead isn’t a coder: Lovable AI. Natural-language app creation, rapid scaffolding, and a simple deployment path – ideal for early user testing. Export to GitHub and harden later.
- Operating inside an enterprise GitHub setup: GitHub Copilot. Deep IDE integration, policy/IP guardrails, and a coding agent for larger tasks – best paired with internal templates for full-stack work.
Notes & Gotchas
- Copilot: Stronger for inline completion and chat than whole-app generation; excellent with repos, tests, and established conventions
- Cursor: Pricing includes usage at model API rates; exceptional for large edits, codebase Q&A, and end-to-end module updates. Budget guardrails recommended
- Lovable: Designed for vibe coding – extremely fast from UI to backend to deployment. Evaluate plan usage and security posture for production scenarios
Prototypes for New Features (Existing Products)
USE CASE
Example: Prototyping New Features in an Existing Product
For a digital lease platform, we rapidly prototyped a new multi-step contract wizard within an existing full-stack React + Express codebase. Starting from a product brief, we extended the architecture by:
- Adding a new js page with localized Slovenian UI
- Connecting it to the existing js backend route
- Reusing shared services (pdfTemplateService, memoryStorage) and context providers (ContractContext)
- Generating validation, PDF mapping, and API integration in under a day
The prototype remained fully compatible with the existing authentication flow, state management (React Query + Context), and deployment model (unified Docker container). Immediate internal testing was possible without disrupting the main application, demonstrating how AI-assisted prototyping can safely extend complex, live systems while respecting established patterns.
Here’s an opinionated scorecard for Prototypes for new features (in existing products) comparing GitHub Copilot, Cursor, and Lovable AI. Scored 1–5 (higher = better) for this use-case.
- Copilot → best when your prototype must land cleanly in an existing repo with issues/PRs and enterprise guardrails
- Cursor → best for fast, multi-file edits and “change this module end-to-end” work inside a codebase
- Lovable → great for standalone demos built by chatting; weaker fit when you must extend a large, existing repo
Scorecard (Prototyping in existing repos)
| Dimension |
GitHub Copilot |
Cursor |
Lovable AI |
| Speed to working prototype |
4 |
5 |
5 |
| Works with existing repo (issues/PR flow, code reviews) |
5 |
4 |
2 |
| Multi-file / refactor changes |
4 |
5 |
2 |
| Context of large codebases |
4 |
5 |
2 |
| Enterprise governance (SSO, policy, audit) |
5 |
4 |
3 |
| Model flexibility (pick/switch models) |
3 |
5 |
3–4 |
| Learning curve for dev teams |
5 |
4 |
5 (for non-coders) |
| Handoff to production (mergeability, tests, PRs) |
5 |
4 |
3 |
| Cost control for teams |
4 |
4 |
3–4 |
Why these scores
- Copilot: Tight GitHub integration; the Copilot coding agent can be assigned an Issue to implement changes and raise a PR in a GitHub-Actions powered sandbox, ideal for „prototype this feature branch“ in a real repo.
- Cursor: Excels at multi-file edits and codebase-aware changes (Composer, background/bug agents). Great for spiking features directly in the code, with strong model options and large context windows.
- Lovable: Chat-to-app flow is extremely fast for UI + backend demos, but it’s more opinionated/greenfield-oriented; extending a big monorepo is less natural than with Copilot/Cursor.
Pick by Situation
- You work within GitHub Issues & PRs and require enterprise controls → GitHub Copilot
- You need aggressive, coherent multi-file edits (new endpoint + wiring + tests) → Cursor
- You want a quick demo of a net-new UI/flow without touching the main repo → Lovable AI.
Practical tips for prototyping in existing products
- Start with an Issue describing inputs/outputs/acceptance; with Copilot, let the agent scaffold a PR you’ll review
- In Cursor, ask for a step plan, then „apply across files“ (routes, controller, service, tests) in one go; finish with a generated test suite
- Use feature flags so prototypes can ship behind guards; have the assistant add flags, metrics, and rollback notes
- Keep costs sane; prefer local/„Auto“ routing in Cursor for routine edits; limit long-horizon tasks to when needed
Extending Modules (Methods, Tasks)
USE CASE
Example: Extending functionality in existing code is the most common day-to-day software development scenario.
Here’s an opinionated scorecard for Extending modules (methods, tasks) in existing codebases – adding endpoints, wiring services, updating schemas, plus tests.
- Best overall for coherent, multi-file edits: Cursor
- Best when you must land changes cleanly via issues/PRs inside the GitHub workflow: GitHub Copilot
- Best for a quick adjunct micro-feature or demo outside the main repo: Lovable AI
Scorecard (1–5 = higher is better)
| Dimension (for extending modules) |
GitHub Copilot |
Cursor |
Lovable AI |
| Overall fit for this use-case |
4 |
5 |
2 |
| Multi-file, end-to-end edits |
4 |
5 |
2 |
| Understands large repos / folder context |
4 |
5 |
2 |
| Repo/IDE flow (branches, PRs, reviews) |
5 |
4 |
2 |
| Test scaffolding & refactor safety |
4 |
5 |
2 |
| Model flexibility (pick/switch models) |
3 |
5 |
3–4 |
| Enterprise governance (SSO, policy, audit) |
5 |
4 |
3 |
| Dev Scalability (grows with team/codebase) |
High |
High |
Med |
| Spike-Readiness Fit (helps add limits, metrics, resiliency) |
4 |
5 |
2 |
| Cost predictability |
4 |
4 |
3–4 |
When to Pick Which
- Cursor → “Change this module end-to-end” (route → service → repo/DB → tests). Strong agent and multi-file capabilities; can include whole folders in context and perform targeted search/replace across long files. Great for refactors that must touch many places.
- GitHub Copilot → You live in GitHub Issues/PRs and need clean integration and governance. The coding agent can implement an assigned issue and submit a PR; Copilot Chat runs inside the major IDEs. Excellent for team review flows.
- Lovable AI → Fastest way to spin up a small adjunct app/component (e.g., a microservice or UI) via chat-to-app and then export to GitHub – useful for demoing a feature idea before touching the main monorepo. Less ideal for deep, surgical edits inside a large existing repo.
Caveats & Tips
- For Cursor/Copilot, ask for a step plan first, then apply changes across files, and generate tests before committing
- Keep feature flags and observability (metrics, logs, traces) in the prompt so assistants wire them as they extend modules
- Validate with CI (linters, type-checks, security scans) to catch over-confident edits
Defect Triage & Fixing
USE CASE
Example: Defect Triage & Fixing in a Legacy Codebase
In a VB.NET data-transfer service, we resolved performance and correctness issues in database operations. Starting from slow-query alerts and inconsistent updates, we:
- Reproduced defects through SQL pattern and execution log analysis
- Identified root causes: string-concatenated queries, missing indexes, inefficient DELETE+INSERT cycles
- Applied targeted fixes: full parameterization, bulk operations with Prepare(), and selective UPDATE/INSERT/DELETE logic
- Added automated performance monitoring with threshold-based alerting
- Proposed complementary database improvements (indexes, statistics, stored procedures)
The AI co-developer accelerated hypothesis validation, generated regression-safe patches across 1,500+ lines of legacy VB code, and produced production-ready instrumentation – demonstrating how AI-assisted debugging modernizes critical backend services without full rewrites.
Here’s an opinionated scorecard for Defect triage & fixing in real codebases – reproducing issues, forming hypotheses, and shipping verified patches.
- Cursor → best for multi-file, codebase-aware fixes and fast hypothesis→patch loops
- GitHub Copilot → best for small/medium fixes that must land cleanly via Issues/PRs with enterprise guardrails
- Lovable AI → handy to prototype repros or diagnostic tools outside the main repo; weaker for deep fixes inside large codebases
Scorecard (1–5 = higher is better)
| Dimension (Defect triage & fixing) |
GitHub Copilot |
Cursor |
Lovable AI |
| Overall fit for this use-case |
4 |
5 |
2 |
| Speed to repro hypothesis |
4 |
5 |
3 |
| Understands large repos / cross-refs |
4 |
5 |
2 |
| Multi-file patching & refactors |
4 |
5 |
2 |
| Reading logs/traces & pointing suspects |
4 |
5 |
3 |
| Test generation (unit/regression) |
4 |
5 |
3 |
| PR/branch workflow integration |
5 |
4 |
2 |
| Enterprise governance (SSO, audit, policy) |
5 |
4 |
3 |
| Dev Scalability (team/codebase growth) |
High |
High |
Med |
| Spike-Readiness Fit (hotfix under load) |
4 |
5 |
2 |
| Cost predictability |
4 |
4 |
3–4 |
| Learning curve for dev teams |
5 |
4 |
5 (for non-coders) |
When to pick which
- Cursor – Use when the bug touches multiple layers (API → service → DB) or needs repo-wide edits. Great at: pulling in many files, forming a step plan, generating a regression test, and applying a coherent patch across modules.
- GitHub Copilot – Use when you’re operating strictly via Issues/branches/PRs and want the safest path to merge. Great at: reading the current file + neighbors, suggesting targeted fixes, and drafting small to medium patches with tests that flow through your standard reviews.
- Lovable AI – Use to spin up a minimal repro or a diagnostics microtool (e.g., a log analyzer UI) quickly outside your monorepo, then bring learnings back to the main codebase. Less suited to surgical fixes inside complex repos.
Practical Playbook (Copilot or Cursor)
- Start with a failing test: Paste the log snippet/stack trace and draft a minimal failing unit or integration test.
- Request a hypothesis plan: „List three likely causes, show where in the code, and how to instrument.“
- Instrument and reproduce: Add temporary logging/metrics and compare expected vs. actual behavior.
- Patch + regression test: Propose a patch and strengthen tests to guard the fix.
- Validate edge cases and performance: Test boundaries, concurrency, and timeouts.
- Polish the PR: Generate a clear PR description (root cause, fix, tests, rollback note) and link the Issue.
Tips
- Commit the failing test before applying the fix
- Ask for diff-only patches to keep changes focused
- For hotfixes, request feature flags, circuit breakers, timeouts, and an immediate rollback plan