3 real-world projects built entirely through vibe coding
This guide demonstrates building complete apps using only vibe coding. Every prompt used is shared as-is.
| Project | Duration | Difficulty | Result |
|---|---|---|---|
| Portfolio Site | 30 min | Beginner | Personal portfolio website |
| SaaS MVP | 2 hours | Intermediate | Web service with payments |
| Chrome Extension | 1 hour | Intermediate | Productivity tool |
Goal: Non-developer builds and deploys a personal portfolio
Tech Stack: Next.js + Tailwind CSS + Vercel
# CLAUDE.md
## Project
Simple personal portfolio website for a designer.
## Stack
Next.js 15, Tailwind CSS, Vercel deployment
## Requirements
- Hero section (name, tagline, profile image)
- Project gallery (cards with image + description)
- About section (brief introduction)
- Contact section (email, GitHub, LinkedIn links)
- Dark/light mode toggle
- Fully responsive (mobile first)
## Design
- Minimal, lots of whitespace
- Font: system default
- Colors: neutral base + 1 accent colorPrompt 1 — Project Setup (5 min)
Initialize a Next.js project with Tailwind CSS.
Build the portfolio site described in CLAUDE.md.
Single-page with hero, project gallery, about, and contact sections.
Prompt 2 — Update Content (3 min)
Change the project card content to:
Project 1: "Brand Renewal" - UI/UX Design, 2024
Project 2: "Mobile App Design" - Figma Prototype, 2024
Project 3: "Website Redesign" - Responsive Web, 2025
Prompt 3 — Dark Mode (3 min)
Add dark mode with next-themes. Put a toggle icon on the right side of the header.
Enable system preference auto-detection.
Prompt 4 — Style Adjustments (5 min)
Change the hero background to a gradient.
Light mode: white→light gray, dark mode: dark gray→black.
Add a subtle lift animation on project card hover.
Prompt 5 — Responsive Check (2 min)
Check how it looks on mobile and fix any issues.
Make sure project cards stack in a single column on mobile.
Prompt 6 — Deploy (5 min)
Set up for Vercel deployment. Project name: "my-portfolio".
Static sites like portfolios are the best fit for vibe coding. No complex logic, and you can see visual results immediately.
Goal: From idea to payment-ready MVP
Tech Stack: Next.js + Supabase + Stripe
Concept: "Daily Memo" — A simple journaling service where you write one memo per day
# CLAUDE.md
## Project
Daily Memo — simple daily journaling SaaS.
## Stack
- Next.js 15 (App Router, TypeScript)
- Supabase (Auth + Database)
- Stripe (payments, $5/month)
- Vercel (deployment)
- Tailwind CSS
## Pages
- / — Landing (non-authenticated)
- /login — Login/Signup (Supabase Auth)
- /app — Main app (write today's memo)
- /app/history — Past memos (monthly calendar)
- /app/settings — Settings + subscription management
- /pricing — Pricing page
## Business Rules
- Free: View last 7 days of memos only
- Pro ($5/month): Full history + monthly report
- One memo per day (1 record per date)
- 500 character limit
## Rules
- Server Components default, client only when needed
- RLS required — users access only their own data
- Stripe webhook server-side only
- Never hardcode environment variablesDatabase Design (10 min)
Write Supabase SQL following the DB schema in CLAUDE.md.
Include RLS policies — users can only CRUD their own memos.
Authentication (15 min)
Implement email/password login with Supabase Auth.
Login page, middleware (protect authenticated pages), logout functionality.
Main App UI (20 min)
Build the daily memo page:
- Top: Today's date display
- Center: Text editor (500 char limit, remaining count shown)
- Bottom: Save button
- If today's memo exists, load in edit mode
Payment Integration (25 min)
Integrate Stripe payments:
1. /pricing page with Free/Pro comparison cards
2. "Start Pro" click → redirect to Stripe Checkout
3. Payment success → webhook updates subscriptions table
4. Only Pro users can access full history
0:00 ~ 0:05 Write CLAUDE.md
0:05 ~ 0:15 DB schema + RLS
0:15 ~ 0:30 Auth (login/signup)
0:30 ~ 0:50 Main app (memo write/edit)
0:50 ~ 1:10 History page (calendar)
1:10 ~ 1:35 Payment integration (Stripe)
1:35 ~ 1:50 Landing + pricing pages
1:50 ~ 2:00 Deploy + final testing
Goal: Build a tab management productivity tool
Tech Stack: Manifest V3 + TypeScript + React
Feature: "Tab Saver" — Save open tabs in groups and restore them later
Initialize a Chrome extension project.
Vite + React + TypeScript setup, Manifest V3 format.
Build the popup UI:
- Top: Current open tab list (checkboxes to select)
- Middle: Group name input + "Save" button
- Bottom: Saved group list (click to restore, X to delete)
Implement save/load logic using Chrome Storage API.
Use chrome.tabs API to get current tabs and restore saved ones.
| Project Type | Suitability | Reason |
|---|---|---|
| Static sites/Portfolios | High | Simple, easy visual verification |
| CRUD web apps | High | Clear patterns |
| SaaS MVP | Medium | Payment/auth needs careful review |
| Chrome extensions | Medium | API specifics need understanding |
| Mobile apps | Medium | Platform-specific issues |
| Complex backends | Low | Architecture understanding essential |
| ML/AI pipelines | Low | Domain knowledge required |
This content is available to Pro subscribers only. Subscribe for ₩9,900/month to access all premium content.
Subscribe to Pro