Overview

MenuGen is a vibe-coded web application that generates images for restaurant menu items from photos of menus. Built entirely with AI assistance (Cursor + Claude), it demonstrates both the power and the pitfalls of vibe coding for non-web developers.

Key Facts

  • Created by: Andrej Karpathy for his hackathon project
  • Core functionality: Take a picture of a menu → OCR dish names → Generate images for each dish → Render in UI
  • Tech stack: React frontend, OpenAI API for OCR, Replicate API for image generation, Vercel for deployment
  • 100% AI-generated code: User (non-webdev) did not write code directly; Cursor + Claude wrote all React components and backend

Vibe Coding Experience

Successes

  • Rapid prototyping: First local prototype took very little time with Cursor + Claude 3.7
  • Beautiful UI: React components, smooth fonts, CSS animations, responsive design generated quickly
  • Full product journey: From scratch to deployed, paying app with 10% markup

Deployment Challenges (the “pain”)

  • API key management: OpenAI and Replicate keys, convoluted permission menus
  • Rate limiting: API calls restricted to a few queries every 10 minutes
  • API changes: LLM knowledge deprecated, official docs outdated (Streaming objects vs JSON)
  • Vercel deployment: Linting errors, .env.local not pushed (gitignored), manual config needed
  • Domain setup: Custom domain (menugen.app) required, DNS wiring, OAuth provider configuration
  • Payments: Stripe integration, email address mismatch issues (Stripe email ≠ Google login email)
  • Database/queues: No persistent state; refresh loses all results; future work needed for Supabase + Upstash

TL;DR

Vibe coding MenuGen was exhilarating as a local demo but painful as a deployed real app. Building a modern app is like assembling IKEA furniture — so many services, docs, API keys, configurations. The most interesting insight: most work was in the browser configuring services, not in the code editor. The infrastructure was not designed for LLM-driven development.

Implications

For non-technical founders: vibe coding lowers the floor (anyone can create prototypes), but deployment complexity remains. The future may bring “batteries included” app platforms that handle domain, hosting, auth, payments, and database out of the box. Until then, simple setups (HTML/CSS/JS + Python backend) may be easier than the serverless multiverse.

Open Questions

  • Can app development platforms become “LLM-friendly” with direct CLI/configuration interfaces?
  • Will future models handle deployment configuration natively, eliminating the 20+ service setup?
  • Should “vibe-coded” apps include documentation of which services were configured and how?

Relationships

  • “implements” vibe-coding — exemplifies vibe coding pattern with Cursor+Claude
  • “differs-from” vibe-coding-vs-dev-tradicional — 100% AI-generated vs traditional development
  • “references” caveman — token reduction complement (Caveman reduces output tokens; MenuGen is about input/output app patterns)

Sources

^[raw/external/www-alura-com-br-windsurf-ia-1ba759eb.md]