Skip to main content
AI-Developer → AI Engineering

Vibe Code This: Build an AI App in 2 Hours Without Writing a Line of Code

A developer would cost $10,000 and take 2 weeks. I built the same production-ready branded infographics tool in 2 hours for $0 using vibe coding — PRD first, then Google AI Studio, screenshots, and one-click deploy.

March 14, 2026
14 min read
#Vibe Coding#Google AI Studio#No-Code#PRD#App Building#Gemini#Deployment#AI Tools
THE SHIFT NOBODY IS TALKING ABOUT
You no longer need a developer to build a production-ready app. You need clear requirements and the right AI tools.
I built a branded infographics generator — with color schemes, style options, download functionality, light/dark mode, and a help modal — in 2 hours. No code. No developer. The same app would cost $10,000+ and take 2 weeks with a traditional team. This is vibe coding.

I spent years assuming that building software meant knowing how to code. Then "vibe coding" happened — and the assumption shattered.

The term was coined by Andrej Karpathy in February 2025: "There's a new kind of coding I call 'vibe coding', where you fully give in to the vibes, embrace exponentials, and forget that the code even exists." What he described was less about forgetting code and more about a fundamental shift — the AI writes the code; you specify the intent.

This article is the exact workflow I used to build a production-ready AI app from idea to live URL in 2 hours. We'll cover: creating a PRD with ChatGPT, building in Google AI Studio, customizing with screenshots and annotations, and deploying to Google Cloud.


What "Vibe Coding" Actually Means

Vibe coding is not hype. It's a legitimate development workflow with a clear process:

Traditional Dev vs. Vibe Coding
Traditional Approach
1. Write requirements doc
2. Hire developer ($10,000+)
3. Wait 2–4 weeks
4. Review and iterate
5. QA and staging
6. Deploy

Total: 2–4 weeks, $10,000+
<div style="background: #1a2d1a; border: 1px solid #22c55e; border-radius: 10px; padding: 16px;">
  <div style="color: #4ade80; font-size: 13px; font-weight: 700; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 1px;">Vibe Coding Approach</div>
  <div style="color: #86efac; font-size: 14px; line-height: 1.9;">
    1. PRD with ChatGPT (30 min)<br/>
    2. Build in AI Studio (1 hr)<br/>
    3. Customize design (30 min)<br/>
    4. Deploy (5 min)<br/><br/><br/>
    <strong>Total: 2 hours, $0</strong>
  </div>
</div>

The key insight: most of the time a developer spends is on translation — translating your requirements into code. AI eliminates that translation step. You still need to think clearly about what you're building. You still need to test, iterate, and make decisions. But you no longer need to know the implementation.


The App We're Building

Before we start, let's get concrete about what "production-ready" means here.

Branded Infographics Generator — Feature List
✅ Brand color scheme selector
✅ Visual style options (minimal, bold, etc.)
✅ Aspect ratio control
✅ AI-generated infographic content
✅ Add / edit / delete schemes
✅ Download functionality
✅ Light / dark mode toggle
✅ Help modal
✅ Responsive (mobile + desktop)

This is a real, usable product — not a toy. The workflow that builds it is the same workflow you'll use for dashboards, client tools, internal utilities, or anything else you can specify.


Step 1: Create a PRD (Don't Skip This)

The biggest mistake people make with vibe coding is jumping straight to building. They describe the app in a single sentence, get frustrated when the AI misses details, and iterate 20 times on things they could have specified upfront.

The PRD is not busywork. It is the work.

WHY PRD FIRST?
A well-written PRD transforms "build me something like Canva" into a precise specification that an AI can execute in one pass. Every ambiguity you leave in the requirement is a decision the AI will make without you — and it will make the wrong one 50% of the time.

The PRD Creation Prompt

Open ChatGPT (or any capable LLM) and use this prompt to generate a thorough PRD through guided questions:

I want to create a PRD (Product Requirements Document) for an AI-powered app.
Please guide me through creating a comprehensive PRD by asking questions about:

- User needs and target audience
- Problem statement
- Features and capabilities
- User flow (how users move through the app)
- Interface requirements (what it should look like and feel like)
- Technical constraints or preferences (frameworks, languages)

Start by asking me about the app I want to build.
Ask one section at a time, wait for my answers, then move to the next section.
At the end, generate the complete PRD in Markdown format.

The 6 PRD Sections ChatGPT Will Cover

PRD Structure
1. User
Who will use this? What's their technical level? What do they already use today?
Example: "Product managers and marketers with no design skills who need branded social content fast."
2. Problem
What pain point does this solve? Why does it matter? What's the current workaround?
Example: "Creating on-brand infographics takes hours in Figma/Canva. Non-designers produce off-brand output."
3. Features
What can the user do? Be specific — "color schemes" not "colors", "dropdowns not modal dialogs".
Example: "Predefined brand color palettes (5–10 options), visual style presets, aspect ratio selector."
4. User Flow
Walk through the full user journey step by step. What happens first, second, third?
Example: "User lands → selects color scheme → enters topic → clicks generate → downloads PNG."
5. Interface
Layout preferences, visual style (minimal/bold), navigation pattern, any reference apps you like.
Example: "Single-screen layout. Toolbar at top with dropdowns. Canvas takes up 70% of screen."
6. Technical
Framework preferences (React? Vue?), styling (Tailwind CSS), any APIs or services to integrate.
Example: "React + TypeScript + Tailwind CSS. Use Gemini API for content generation."

Key tips for PRD quality:

  • Be specific about UI patterns: "dropdown" vs "radio buttons" vs "toggle" — the AI will implement exactly what you say
  • Keep v1 ruthlessly simple — build the core, nothing else
  • Export as Markdown or PDF so you can reuse it and update it for v2

Time: 30 minutes | Output: Complete Markdown PRD document


Step 2: Build in Google AI Studio

Google AI Studio's app-building mode (Canvas) is the best platform for this workflow when you want AI features baked into the app. It uses Gemini under the hood, has a split-screen (code + live preview), and supports direct deployment to Google Cloud.

Why AI Studio Over Alternatives?
Google AI Studio
Gemini-native. Built-in deploy. Annotation tool. Live preview. Best for AI-first apps.
v0 / Lovable
Great for UI-heavy apps. Less direct integration with AI models.
Cursor / Windsurf
Needs a local dev environment. Better for developers extending existing codebases.

The Build Process

1. Open Google AI Studio Go to aistudio.google.com and sign in with your Google account.

2. Navigate to Build / Canvas Mode Look for the "Build" tab or "Create App" option in the sidebar. The interface uses a split-screen: prompt input on the left, live preview on the right.

3. Upload Your PRD Either drag-and-drop your PRD file (Markdown or PDF) into the prompt area, or paste the text directly.

4. Use This Generation Prompt

Use the attached PRD to create a complete, production-ready application.

Build all features exactly as specified in the requirements.
Use React, TypeScript, and Tailwind CSS.
Make the UI clean, professional, and responsive for both mobile and desktop.
Include proper error handling and loading states.

5. Wait for Generation and Test AI Studio will generate 10–20 files (React components, styles, config, types). When it's done, test in the live preview:

Testing Checklist After Generation
☐ Generate an infographic
☐ Switch color schemes
☐ Change visual style
☐ Change aspect ratio
☐ Download the result
☐ Add a new color scheme
☐ Edit an existing scheme
☐ Delete a scheme
☐ Test on mobile viewport
☐ Check loading states

The power of PRD-driven generation: Because you specified everything in the PRD, the first generation typically gets 90%+ of functionality right. You won't be iterating on what it does — only on how it looks.

Time: 1 hour (including initial testing)


Step 3: Customize Design with Screenshots and Annotations

Functionality is correct. But the default design is... fine. You want it to look like your product. This is where most vibe coding tutorials stop — and where the real workflow begins.

KEY INSIGHT: Visual feedback beats text descriptions
"Make it look more modern" is meaningless to an AI. A screenshot of what you like — with a label saying "copy this toolbar style" — is unambiguous. Always prefer visual references over textual descriptions when working on design.

Method 1: Screenshot Reference Styling

Find an app whose design you admire. Take a screenshot. Upload it with this prompt:

The functionality is perfect. But the design needs work.

Look at this screenshot — I want you to copy:
- The toolbar layout (top, horizontal, compact)
- The dropdown style (subtle, not boxy)
- The icon style (outlined, not filled)
- The overall color temperature (cool, dark background)

Apply these design principles to my app without changing any functionality.

AI Studio will analyze the screenshot and extract the visual patterns — spacing, typography choices, component styles, color application — and apply them to your generated code.

Method 2: Annotations (AI Studio's Killer Feature)

This is what makes AI Studio stand out. The annotation tool lets you draw directly on the live preview of your app:

  1. Click the Annotate button in AI Studio's toolbar
  2. Draw arrows, circles, or highlight areas on the live preview
  3. Add numbered callout labels with text instructions
  4. Click "Add to chat" — the annotated screenshot goes into the conversation

Example annotation session:

[Arrow pointing to prompt box at top] → 1. Move this to the bottom
[Circle around tool settings bar] → 2. Center these horizontally
[Arrow to generate button] → 3. Make this more prominent — less soft, bolder color
[Box around icon area] → 4. Add icons to each dropdown option

This is fundamentally more precise than text alone. The AI sees exactly what you're pointing at and understands the spatial relationship between elements.

Method 3: Iterative Refinement Loop

Design isn't done in one pass. Budget 5–10 iterations:

Refinement Examples (Actual from This Build)
"Put the logo by itself at the top, centered"
"Make the generate button less soft — I want it to feel like a primary action"
"Add icons to the dropdowns — each option should have a small icon on the left"
"Add an edit button next to the delete button for each color scheme"
"Add a light/dark mode toggle in the top-right corner"
"Add a help modal that explains what each setting does"

Version checkpoints: AI Studio automatically tracks each generation. You can see what changed, restore previous versions, and branch off from any checkpoint. Use this aggressively — if an iteration makes things worse, roll back immediately.

Time: 30 minutes | Iterations: 5–10


Step 4: Deploy to the World

Your app is done. Now make it accessible.

Option A: One-Click Deploy to Google Cloud (Recommended)

This is the simplest path. Everything stays in AI Studio:

  1. Click "Deploy app" in the AI Studio toolbar
  2. Create a new Google Cloud project (or select existing)
  3. Enable billing (required — but free tier covers light usage)
  4. Click Deploy
  5. Wait ~2 minutes
  6. Get your public URL
What You Get with Google Cloud Deploy
✅ Public HTTPS URL
✅ Automatic scaling
✅ No server to manage
✅ Global CDN via Cloud Run
✅ Zero-downtime updates
✅ Built-in monitoring

Option B: Download and Deploy Yourself

Want more control or prefer a different host?

  1. Click "Download app" → Get a ZIP file with all source code
  2. Open in Cursor, VS Code, or any editor
  3. Push to GitHub
  4. Deploy to Vercel, Netlify, or Cloudflare Pages with one command:
# Vercel
npx vercel --prod

# Netlify
npx netlify deploy --prod --dir=dist

# Or connect GitHub repo to Vercel/Netlify dashboard for auto-deploy on push

GitHub Integration (Version Control)

Whether you deploy manually or via AI Studio:

  1. Click "Connect to GitHub" in AI Studio
  2. Create a new repository (public or private)
  3. All code is pushed automatically
  4. Future AI Studio sessions commit changes as new commits
  5. Connect Vercel/Netlify to the repo for automatic deployments on push

Time: 5 minutes | Result: Live app, publicly accessible worldwide


Advanced: Production Deployment Architecture

For apps that need to scale beyond a single container, here's the full production setup.

Docker Container

Docker packages your app and all dependencies so it runs identically on any machine or cloud platform:

# Multi-stage build: build node app, then serve with nginx
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Build and run locally:

docker build -t infographics-app .
docker run -p 3000:80 infographics-app
# App is now at http://localhost:3000

Kubernetes Deployment

For high-traffic production environments — Kubernetes manages multiple replicas, handles failover, and auto-scales:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: infographics-app
  labels:
    app: infographics-app
spec:
  replicas: 3 # Run 3 copies — if one crashes, 2 keep serving
  selector:
    matchLabels:
      app: infographics-app
  template:
    metadata:
      labels:
        app: infographics-app
    spec:
      containers:
        - name: frontend
          image: your-registry/infographics-app:latest
          ports:
            - containerPort: 80
          resources:
            requests:
              memory: "128Mi"
              cpu: "100m"
            limits:
              memory: "256Mi"
              cpu: "200m"
          readinessProbe:
            httpGet:
              path: /health
              port: 80
            initialDelaySeconds: 5
            periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
  name: infographics-service
spec:
  selector:
    app: infographics-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer # Exposes the app with a public IP

When do you need Kubernetes? For small apps, Google Cloud Run (from AI Studio's one-click deploy) is enough — simpler, cheaper, zero management. Kubernetes is for apps with predictable high traffic, complex microservices, or specific compliance requirements.

Performance: Image Caching

Generated infographics are expensive to produce (API call + rendering). Cache aggressively:

class ImageCache {
  private cache = new Map<string, { url: string; createdAt: number }>();
  private TTL_MS = 60 * 60 * 1000; // 1 hour

  getCacheKey(prompt: string, style: string, colorScheme: string): string {
    return `${prompt}::${style}::${colorScheme}`;
  }

  get(prompt: string, style: string, colorScheme: string): string | null {
    const key = this.getCacheKey(prompt, style, colorScheme);
    const entry = this.cache.get(key);
    if (!entry) return null;
    if (Date.now() - entry.createdAt > this.TTL_MS) {
      this.cache.delete(key);
      return null;
    }
    return entry.url;
  }

  set(prompt: string, style: string, colorScheme: string, url: string): void {
    const key = this.getCacheKey(prompt, style, colorScheme);
    this.cache.set(key, { url, createdAt: Date.now() });
  }
}

// Usage in generation flow
async function generateInfographic(
  prompt: string,
  style: string,
  scheme: string,
) {
  const cache = new ImageCache();
  const cached = cache.get(prompt, style, scheme);
  if (cached) return cached;

  const url = await callGeminiImageAPI(prompt, style, scheme);
  cache.set(prompt, style, scheme, url);
  return url;
}

Security: Input Sanitization

Before sending user input to the AI API, strip any sensitive data patterns:

function sanitizeUserInput(input: string): string {
  return input
    .replace(/\b\d{3}-\d{2}-\d{4}\b/g, "[REDACTED-SSN]") // SSN
    .replace(/\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b/g, "[REDACTED-CARD]") // Credit cards
    .replace(/\b[\w.-]+@[\w.-]+\.\w{2,}\b/g, "[REDACTED-EMAIL]") // Emails
    .replace(
      /\b(?:\+?1[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g,
      "[REDACTED-PHONE]",
    ); // Phone numbers
}

The 7 Most Common Vibe Coding Mistakes

Avoid These
Skipping the PRD
AI builds a generic app, not your app. You spend 3× as long iterating on fundamentals.
Being vague about UI
"I want options" → AI picks. "I want a horizontal dropdown menu" → AI executes.
Trying to do everything in v1
More features = more failure surface. Ship 5 features well, then add more.
Not testing between iterations
Design changes can break functionality. Test every core flow after each generation.
Using text-only for design
Screenshots + annotations are 5× more precise than describing design in words.
Deploying without testing mobile
Check the mobile viewport in browser devtools before every deploy.
Not using version checkpoints
AI Studio saves versions. If an iteration breaks things, restore the previous checkpoint immediately.

Real Numbers: What to Expect

Benchmark: Branded Infographics Generator
30m
PRD CREATION
6–8 sections, guided by ChatGPT, exported as Markdown
1h
INITIAL BUILD
10–20 files generated, 90%+ functionality matches PRD
30m
DESIGN POLISH
5–10 iterations using screenshots and annotations
5m
DEPLOYMENT
One-click to Google Cloud, public HTTPS URL
Total: 2 hours · Cost: $0 (free tier) · App quality: Production-ready

Your 5-Step Starter Plan

Start today, not "when I have time":

Today's Build Checklist
1
Create PRD (30 min): Open ChatGPT, use the guided PRD prompt above, answer each section, export as Markdown
2
Build in AI Studio (1 hr): Go to aistudio.google.com, upload PRD, generate app, test all features in live preview
3
Customize design (30 min): Find a reference app, screenshot it, use annotation tool for layout adjustments, iterate 5–10 times
4
Test thoroughly (15 min): Run the complete testing checklist above, check mobile viewport, verify downloads work
5
Deploy (5 min): Click Deploy in AI Studio, create Google Cloud project, get your public URL

Key Takeaways

What You Learned
1
PRD is the work. A precise requirements document transforms vague ideas into executable instructions. Skipping it costs you hours of frustrated iteration. Spend 30 minutes on the PRD and save 3 hours of back-and-forth.
2
Google AI Studio is the best platform for AI-native apps. Its native Gemini integration, split-screen Canvas mode, annotation tool, and one-click Google Cloud deployment make it purpose-built for this workflow.
3
Visual feedback beats text descriptions for design. Screenshots + annotations give the AI unambiguous spatial and stylistic references. "Copy this toolbar style" with a screenshot is 5× more precise than describing it in words.
4
Test between every iteration. Design changes can silently break functionality. After every generation, run the core feature checklist — don't assume it still works just because you only changed the button color.
5
Start simple, ship fast, iterate. The biggest productivity killer is scope creep in v1. Build the 5 core features well. Deploy. Get real users. Then add features. A live simple app beats a perfect app that never ships.
MH

Mohamed Hamed

20 years building production systems — the last several deep in AI integration, LLMs, and full-stack architecture. I write what I've actually built and broken. If this was useful, the next one goes to LinkedIn first.

Follow on LinkedIn →