Vibe Coding Enterprise Portal, 6 Hours, Copilot
A senior engineer shipped an enterprise portal in 6 hours using Copilot vibe-coding. Here's what actually worked, what broke, and where the human had to take over.

A post on r/developersIndia blew up last week. A senior engineer at a Bangalore fintech claimed they shipped a full enterprise portal - auth, dashboard, CRUD, role-based access - in 6 hours using GitHub Copilot 2026 and a vibe-coding workflow. The comments split cleanly: half called it a lie, half wanted the playbook.
I replicated the workflow. Here is what actually happened.
The Architecture
The stack: Next.js 15.0 on App Router, Tailwind CSS 4.0, Prisma with PostgreSQL, NextAuth.js v5. The portal was an internal vendor management system - nothing exotic, but representative of what mid-size Indian SaaS companies ship weekly.
npx create-next-app@15 vendor-portal --typescript --tailwind --app
npm install prisma @prisma/client next-auth@beta @auth/prisma-adapter
The "vibe-coding" part: you describe the feature in natural language inside Copilot Chat, accept the scaffolded output, then refine. You never start with a blank file. You start with a prompt and iterate on what comes back.
The backend choice mattered. Prisma + PostgreSQL because Copilot 2026 has seen a billion Prisma schemas. The pattern recognition is absurd for well-trodden paths. If I had picked something niche - say, Drizzle with Turso - the quality would have cratered.
What Compressed 3 Days Into 6 Hours
Three Copilot patterns did the heavy lifting.
Pattern 1: Schema-first generation. I wrote the Prisma schema manually (15 minutes), then let Copilot generate every CRUD route, every form component, every validation schema from it. One prompt per resource. The schema acts as a contract - Copilot stays consistent because it keeps re-reading the same types.
// Prompt: "Generate a Next.js Server Action for creating a vendor from this Prisma model.
// Include zod validation, error handling, and revalidation."
// Output was 90% correct - missed a revalidationPath call.
Pattern 2: Component composition from descriptions. I sketched the dashboard layout on paper, described it in text to Copilot Chat, and got a working Tailwind layout in one shot. Then I described each widget individually. The key: decompose the UI into small, describable units. "A card showing vendor count with a sparkline" works. "Build the dashboard" does not.
Pattern 3: Test generation from implementation. After each feature, I asked Copilot to generate Vitest tests. The tests caught real bugs - mostly around edge cases in date filtering and null handling. Writing tests manually would have taken 4 hours. Copilot did it in 40 minutes of prompt-and-fix cycles.
Time breakdown:
| Task | Manual Estimate | Actual with Copilot | Compression |
|---|---|---|---|
| Prisma schema + migrations | 1 hr | 20 min | 3x |
| CRUD API routes (5 resources) | 4 hrs | 1 hr | 4x |
| UI components + pages | 8 hrs | 2.5 hrs | 3.2x |
| Auth setup + RBAC | 3 hrs | 1 hr | 3x |
| Tests | 4 hrs | 40 min | 6x |
| Bug fixes + polish | 2 hrs | 30 min | 4x |
| Total | 22 hrs | 6 hrs | 3.7x |
The 3-day estimate assumes a single senior engineer working focused hours. That is realistic for a Bangalore SaaS shop where you are also in 3 standups a day.
Where Copilot Broke
Four hard failures.
Complex authorization logic. RBAC with resource-level permissions - "a vendor can only edit their own profile, an admin can edit all, a viewer can see but not touch" - Copilot generated code that looked correct but had a subtle privilege escalation. A vendor could update the role field on their own record via the API because the update route used req.body directly. I caught it during manual review. This is the exact class of bug that ships to production and becomes a postmortem.
Multi-step transactions. Vendor onboarding creates a vendor record, a user record, sends an email, and logs an audit entry. Copilot could not reliably sequence these with proper error rollback. It kept putting email sends inside transactions, which is wrong. I wrote this manually.
Custom Tailwind theming. The design system needed specific brand colors, spacing tokens, and a dark mode that was not just "invert everything." Copilot's Tailwind output is generic. It looks like every other SaaS dashboard. I spent 45 minutes on the theme file alone, which Copilot could not meaningfully help with because it does not understand visual brand identity.
Performance-sensitive queries. The dashboard aggregates data across 5 tables with date filters. Copilot wrote a query that worked but did 12 database roundtrips. I rewrote it as a single raw SQL query with Prisma $queryRaw. The page went from 800ms to 90ms.
What NOT to Vibe-Code
Hard rules after this experiment:
- Authentication and authorization. Use Copilot for boilerplate, but review every line. The cost of a bug here is not a broken page - it is a data breach.
- Payment integration. Razorpay webhook handling, idempotency keys, signature verification. Copilot will generate plausible code that misses edge cases. Do not trust it.
- Database migrations on production data. Copilot can write migrations, but you must reason about rollback safety yourself.
- Any code where the business logic is the product. If your company's competitive advantage is in the algorithm, do not outsource it to a model that trained on your competitors' public code.
The Demo-Production Line
The 6-hour portal was a working demo. Making it production-ready took another 8 hours. Here is what was missing:
- Proper error boundaries with user-facing messages (Copilot generates
console.errorand generic toast notifications) - Rate limiting on API routes
- Input sanitization beyond zod validation (XSS in rich text fields)
- Database connection pooling configuration
- Environment variable validation at startup
- Logging with structured context (not just
console.log) - A deployment pipeline with preview environments
The original r/developersIndia poster acknowledged this. The 6-hour claim was for a working prototype that stakeholders could click through. Production hardening is a different phase. Conflating the two is how you end up with a Zerodha-style outage.
Real Cost in API Tokens
GitHub Copilot 2026 on the Business plan: $19/month ($19/month, roughly ₹1,590/month). I used Copilot Chat heavily - roughly 140 prompts over 6 hours. The token cost is bundled into the subscription, so marginal cost per session was effectively zero.
But if you are using Claude Code v1.x or similar token-billed tools for the same workflow:
| Tool | Session Tokens | Cost (USD) | Cost (INR) |
|---|---|---|---|
| GitHub Copilot Business | Included | $0 marginal | ₹0 marginal |
| Claude Code v1.x (Sonnet) | ~180K input + 90K output | $2.70 | ₹227 |
| Claude Code v1.x (Opus) | ~180K input + 90K output | $8.10 | ₹681 |
Copilot's flat pricing makes vibe-coding economically viable for extended sessions. Token-billed models add up fast when you are iterating through 140 prompts.
What Teammates Thought
I showed the portal to three colleagues at a Hyderabad product company.
The tech lead's reaction: "This looks like it was built in a week, not a day. But I would not merge it without a full review - the patterns are too uniform. When everything looks the same, you stop reading carefully."
The junior developer: "I could never do this. I do not know enough to catch the bugs Copilot introduces." This is the real danger. Vibe-coding is a senior engineer's acceleration tool, not a junior's replacement for understanding.
The PM: "Can we do this for every feature?" No. The compression ratio drops sharply for novel problems. This worked because vendor management is a solved problem with thousands of reference implementations in Copilot's training data.
Quick takeaways
- Vibe-coding with Copilot gives a 3-4x speedup on well-trodden CRUD patterns, but the compression vanishes for novel or security-critical code.
- Always generate from a schema or contract first - it keeps Copilot consistent across files and prevents the "slightly different types everywhere" problem.
- Budget 50-60% of the "saved" time for production hardening. The 6-hour demo is not the 6-hour production deploy.
- Never vibe-code auth, payments, or anything where a bug means a breach. Use Copilot for the boilerplate, then review every line yourself.
- The economics work on flat-rate plans. On token-billed models, a 6-hour vibe-coding session can cost ₹227-₹681 per feature, which adds up across a sprint.
Related
Filed under
More AI Coding from the desk.

Next.js Static Export: Cloudflare Pages Preflight
A durable Next.js static-export preflight: prove the build, enumerate dynamic routes, inspect the rendered head, and audit the exact out/ artefact before a Cloudflare Pages hand-off.

Custom MCP Server in Python for Claude
Claude Code is sharp until it hits the edge of your machine and your private tools. I wrote three small MCP servers in Python to close that gap. Here is the real pattern, the real gotcha that bit me, and what it costs.

Claude Code Subagents: Fork Flag, Cache Leak
Claude Code subagents isolate their task contexts. This guide covers the current fork-cache behavior, how to measure a fanout, and the worktree pattern for parallel writers.