---
title: "From idea to deployed: a real 30-minute MVP build log"
description: "I sat down with no project, no domain, no infrastructure. Thirty minutes later there was a live URL with auth, a deployed AI feature, and a privacy policy. Here's the actual log."
date_published: 2026-05-05
last_updated: 2026-05-05
canonical: https://vibecodersguidetomvp.help/blog/30-minute-mvp-build-log/
author: Titan Alpha
tags: ["mvp","ai-agents","build-log"]
---

# From idea to deployed: a real 30-minute MVP build log

I sat down with no project, no domain, no infrastructure. Thirty minutes later there was a live URL with auth, a deployed AI feature, and a privacy policy. Here's the actual log.

> Canonical HTML: https://vibecodersguidetomvp.help/blog/30-minute-mvp-build-log/
> This is the agent-friendly markdown alternate for the page above.


The Vibe Coder's Guide tagline is "30 minutes from nothing to a deployed MVP." Founders ask whether that's marketing or actual.

It's actual. I sat down with no code, no infrastructure, and no idea, and built one. The idea was deliberately mundane to remove the variable of "but my idea is special": **a tool that generates three meal plan options from a list of ingredients you have.**

Here's the log, time-stamped, exactly as it happened.

## 0:00 — Pick the agent

Open Claude Code's desktop app. Click "Code" tab in the left column. Paste the bootstrap prompt from vibecodersguidetomvp.help.

Agent: *"Where on disk should this live and what should I call it?"*

Me: `~/projects` and `meal-plan-mvp`.

Agent clones the starter project repo into `~/projects/meal-plan-mvp`. Confirms `npm install` completes. Creates `PROJECT.md`. Asks if I want git enabled. Yes. Initial empty commit.

**Time: 0:04**

## 0:04 — Discover (sub-skill 01)

Agent: *"In one or two sentences, what does this thing do, and for whom?"*

Me: *"Generates three meal plan options for the week from a list of ingredients I have. Audience: people who hate meal planning but want to use what's already in the fridge."*

Agent reflects this back. Asks about audience. *"Probably people in their 30s with families, who feel guilty about food waste."* Asks about success criteria. *"They get three plausible meal options in under 10 seconds and one of them sounds good enough to commit to."*

Agent fills in PROJECT.md. Asks about MVP slice. We agree: text input for ingredients → AI generates 3 options → user picks one → done. Everything else (saving, sharing, accounts) is post-MVP.

**Time: 0:09**

## 0:09 — Design (sub-skill 02)

Agent: *"Mood — pick two: minimal, playful, friendly, technical, brutalist."*

*"Friendly and minimal."*

Agent: *"Reference?"*

*"Plain, clean. Like the New York Times Cooking app but with even less."*

Agent generates a DaisyUI theme — warm cream background, dark green accent, single sans-serif. Updates `globals.css`. Suggests opening `localhost:3000` to watch as it builds. I do.

The landing page renders. Hero says "What's in your fridge?" with a textarea and a single primary button labeled "Plan my week." That's the entire interface.

Agent designs a logo: a simple circle with three concentric arcs suggesting a plate. Inline SVG. Saves as `public/icon.svg` and uses it as both favicon and inline header logo.

**Time: 0:14**

## 0:14 — AI integration (sub-skill 04)

Agent: *"This product needs an AI feature for the core loop. Want me to set up OpenAI? You'll need an API key."*

I open `platform.openai.com/api-keys`, create a key, paste it back. Agent appends to `.env.local`.

Agent installs `openai` and `zod`, creates `lib/ai.ts` with the standard `aiCall` helper, then writes the meal plan endpoint:

```ts
// app/api/plan/route.ts
const Plan = z.object({
  options: z.array(z.object({
    name: z.string(),
    days: z.array(z.object({
      day: z.string(),
      meal: z.string(),
      ingredients: z.array(z.string()),
    })).length(7),
  })).length(3),
});
```

Wires the textarea to POST → the endpoint → renders three cards.

I test on `localhost:3000`. Type `eggs, rice, broccoli, soy sauce, garlic, ginger, tofu`. Click "Plan my week." Three options appear in 2 seconds. They're plausible. One of them sounds genuinely good (Tuesday: tofu fried rice with steamed broccoli).

**Time: 0:21**

## 0:21 — Compliance + accessibility quick pass (sub-skills 08, 09)

Agent: *"You don't have user accounts yet, so a TOS/Privacy is light. Want me to draft them?"*

*"Yes."*

Agent asks for canonical URL (TBD, will be `meal-plan-mvp.vercel.app` after deploy) and contact email (`me@my-real-email.com`, not a privacy alias for now).

Agent drafts both pages, footer with Terms / Privacy / Do Not Sell links, and a one-line cookie disclosure. Total: about 90 seconds of generation.

Then runs a quick accessibility pass. Lighthouse score on `localhost`: Accessibility 98. One contrast issue with the disclaimer text — agent darkens it to pass. Now 100.

**Time: 0:24**

## 0:24 — Deploy (sub-skill 13)

Agent: *"Existing deploy detected? No. Want to set up Vercel?"*

*"Yes."*

Agent offers to drive the browser. *"Yes, please."*

Headed Chrome window opens to vercel.com. I sign in with GitHub. The browser pauses at the token-creation page. I name the token `meal-plan-mvp-cli`, scope: Full Account, expiration: 90 days, click Create. Copy the token. Paste it in the terminal.

Agent appends `VERCEL_TOKEN` to `.env.local`. Pushes the project to a new private GitHub repo (`gh repo create meal-plan-mvp --private --source=. --remote=origin --push`). Runs `npx vercel link --yes`. Pushes env vars (`OPENAI_API_KEY`, `AUTH_SECRET`). Runs `npx vercel --prod --yes`.

Production URL: `https://meal-plan-mvp.vercel.app`. Visit it. Type `eggs, rice, broccoli, soy sauce, garlic, ginger, tofu`. Click "Plan my week." Three options appear in 2 seconds.

**Time: 0:30**

## What I have at minute 30

A live URL. With auth wired (just not exposed yet — no signup form, but the infrastructure is there for v2). With a real AI feature. With a privacy policy and terms of service. With Lighthouse 98 accessibility. With the AdSense and analytics scripts ready to add.

Let me run the production smoke test:

- `curl -I https://meal-plan-mvp.vercel.app/` → 200, security headers present.
- Open in a private browser window, walk through the flow → works.
- Walk through on mobile viewport via Chrome dev tools → works.

That's an MVP. Not a great MVP — there's no signup, no save-for-later, no recipe details. But it's a real, deployed, hardened product that solves a clear problem in 60 seconds for a stranger.

## What I deliberately skipped

The point isn't "30 minutes covers everything." It's "30 minutes covers enough to ship and get feedback." I skipped:

- **Signup / accounts.** Not needed for MVP. People can use it without an account.
- **Save / share.** Post-launch feature.
- **Recipe pages.** The agent suggested generating per-meal recipe details on demand. Good idea, v2.
- **Custom domain.** I'm on `*.vercel.app`. Fine for v1. Buy a domain when there's a reason to.
- **Admin dashboard.** Skipped.
- **E2E tests.** Skipped — manual testing was enough at this scale.
- **Deliverables (pitch deck etc.).** Skipped — I'm not raising on this.

The skill bundle's strength is letting you skip the things that don't matter and focus on the things that do.

## The agent did the work

I want to be honest about something: the agent did 95% of the *typing*. I did the deciding.

Decisions I made:
- The idea (mundane meal planner)
- The audience
- The mood (friendly, minimal)
- The reference (NYT Cooking)
- The MVP slice
- "Yes" or "no" to each agent suggestion
- The ingredients list for the test

That's it. Maybe 10 minutes of actual decision-making spread across 30 minutes of build time. The rest was the agent reading skills, executing, asking clarifying questions, and iterating.

This is the loop the Vibe Coder's Guide tries to make easy. The agent does the implementation. You do the judgment. Together, you ship in an afternoon what would have taken a person a week alone.

## Try it

The skills bundle is free. Install Claude Code or Codex (both free at the entry tier). Pick an idea. Run the loop yourself.

You'll spend more time picking the idea than building it. That's the new normal.

