💻 The Complete Vibe Coding Framework
7,200 hours condensed: Framework + All prompts + Tools + 48-hour checklist
📊 Proven Results:
- €5.48M+ closed, helped by using these tools
- 6x lead flow for clients
- 7,200+ hours of experience
Everything you need is in this post: No downloads, no waitlists. Just copy-paste and ship.
🧠 Phase 1: Thinking (50 min)
Step 1: Deep Research (20 min)
Copy this prompt into Claude or ChatGPT:
Research demand and competitors for: [YOUR IDEA] PHASE 1: DEMAND VALIDATION 1. Who needs this? - Target audience (ICP) - Pain points this solves - Willingness to pay - Market size estimate 2. Existing solutions - Direct competitors (5-10) - How they solve it - Pricing models - What they're missing 3. Unique angle - What can I do better/different? - Why would someone choose mine? - Gap I can own DELIVERABLE: GO/NO-GO recommendation with: - Confidence level (High/Medium/Low) - Biggest risk - One sentence unique value prop Keep under 500 words.
⚠️ Why: I skipped this on my first 3 builds. All three died.
Step 2: PRD (15 min)
Copy this prompt:
Write a PRD for: [YOUR IDEA] ## CONTEXT [What this does, who it's for, core value — 1 paragraph] ## USER FLOW 1. User arrives 2. User does X 3. User gets Y (3-5 steps max) ## MVP FEATURES (Must-Have Only) 1. [Feature 1] - why essential 2. [Feature 2] - why essential 3. [Feature 3] - why essential (Stop at 3-5. More = building too much) ## SUCCESS METRICS - How do I know this works? - One number that matters ## OUT OF SCOPE (V1) [Features you're NOT building yet] Under 2 pages. If longer, cut scope.
📝 Reality: I wrote 12 terrible PRDs before shipping. Ship broken, learn fast.
Step 3: Tech Design (15 min)
Copy this prompt:
Based on this PRD: [PASTE YOUR PRD] Recommend tech stack: 1. VIBE CODING TOOL - Beginner: Bolt, Lovable - Advanced: Cursor, Claude Code - Your recommendation + why 2. BACKEND - Database (default: Supabase) - Auth (Supabase Auth or Clerk) - Storage (if needed) 3. DEPLOYMENT - Web: Vercel - Mobile: App/Play Store - Special considerations 4. APIS/INTEGRATIONS - External services needed - API keys required CONSTRAINT: Ship in 48 hours. Keep simple.
🛠️ Tool Decision Tree
| If You're... | Use This | Why |
|---|---|---|
| Brand new to coding | Bolt.new | Instant preview, no setup, visual UI |
| Building simple web app | Lovable | Great for landing pages, forms, simple flows |
| Building complex app | Cursor | Full IDE, better for multi-file projects |
| Want best natural language | Claude Code | Best thinking → code translation (my favorite) |
| Building with AI/RAG | Claude Code + Cursor | Need both planning (Claude) + implementation (Cursor) |
⚠️ Don't: Spend 3 weeks comparing tools (I did this). Tool matters less than thinking clearly.
⚙️ Phase 2: Execution (1-3 hrs)
Step 4: Agent Setup (2 min)
Create this file: agents.md
# agents.md ## PROJECT: [Your App Name] ## CONTEXT [One paragraph from PRD: what, who, why] ## TECH STACK - Tool: [Claude Code/Cursor/Bolt/Lovable] - Backend: [Supabase/Firebase] - Deploy: [Vercel/Netlify] - APIs: [List external APIs] ## BUILD RULES 1. Follow PRD exactly 2. Ship broken, iterate fast — NO gold-plating 3. MVP only — new features need approval 4. Ask before adding dependencies 5. Test core flow before polish ## FILE STRUCTURE ``` /src /components (UI) /pages (routes) /api (backend) /db (schemas) /utils (helpers) ``` ## NEXT STEPS 1. [First thing to build] 2. [Second thing] 3. [Third thing] ## MAINTENANCE Support for: [6 months minimum] Plan: [How to handle bugs/requests]
💡 This is what makes it work: Without agents.md = prompting. With it = orchestrating.
Step 5: Build (1-3 hrs)
Backend Guide (Supabase)
Step-by-step:
- Go to supabase.com → Create new project
- Copy credentials from Settings → API:
- Project URL
- anon/public key
- Use this prompt in your vibe coding tool:
Set up Supabase backend for: [PASTE YOUR PRD] Create: 1. Database schema (tables, relationships, RLS) 2. Auth config (email/password or OAuth) 3. API client (environment variables) 4. Type definitions (if TypeScript) Best practices: - Row Level Security enabled - Indexes on foreign keys - Timestamps (created_at, updated_at) Give me: - SQL to run in Supabase dashboard - .env variables - Client init code
- Copy SQL → Supabase SQL Editor → Run
- Add env variables to
.env.local:NEXT_PUBLIC_SUPABASE_URL=your-project-url NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
- Done. Backend ready in 5 minutes.
📊 Real talk: I rebuilt my backend 4 times. Always came back to Supabase. 90% of you need Supabase.
Vector Storage (If Building with AI)
Pinecone Setup (5 minutes):
- Go to pinecone.io → Create free account
- Create index:
- Name:
your-app-vectors - Dimensions:
1536(for OpenAI embeddings) - Metric:
cosine
- Name:
- Copy API key from dashboard
- Use this prompt:
Set up Pinecone for: [DESCRIBE USE CASE: semantic search, RAG, etc.] Provide: 1. Index config (already created) 2. Embedding pipeline - Model: OpenAI text-embedding-3-small - Batch size: 100 3. Query code (search + filter) 4. Error handling Environment: PINECONE_API_KEY=[your-key] PINECONE_INDEX=your-app-vectors
Core Build Prompt
Build this app following agents.md: [PASTE OR LINK agents.md] Start with: 1. Project scaffold 2. Core user flow (PRD Step 1 → 2 → 3) 3. MVP features only Test after each feature: - Works end-to-end? - User can complete core action? Ship broken, iterate later. Start with feature #1 from PRD.
Deploy to Vercel (10 min)
- Push code to GitHub (if not already)
- Go to vercel.com → Import repository
- Add environment variables:
- Supabase URL + key
- Pinecone key (if using)
- Any API keys
- Deploy → Live in 2 minutes
Or use this prompt:
Deploy to Vercel: 1. Set up project 2. Configure env variables: [LIST YOUR VARIABLES] 3. Build settings (if custom) 4. Deploy production Provide: - vercel.json config (if needed) - Build commands - Post-deploy checks Goal: Live URL in 10 minutes.
⚠️ Critical: Deployment = 10% of work. Half my tools died from no maintenance. Don't build what you won't support 6+ months.
🚀 Git Quickstart
If starting from scratch:
git init git add . git commit -m "Initial commit" gh repo create your-app-name --public --source=. --remote=origin git push -u origin main
If using a template:
# Next.js + Supabase npx create-next-app@latest your-app --typescript --tailwind --app cd your-app npm install @supabase/supabase-js # Or Vite + React npm create vite@latest your-app -- --template react-ts cd your-app npm install @supabase/supabase-js
📊 Pre-Built Supabase Schemas
Copy-paste these into Supabase SQL Editor for common app types:
SaaS App (User + Teams)
-- Users table (extends Supabase auth.users)
create table public.profiles (
id uuid references auth.users on delete cascade primary key,
email text unique not null,
full_name text,
avatar_url text,
created_at timestamptz default now(),
updated_at timestamptz default now()
);
-- Teams/Organizations
create table public.teams (
id uuid default gen_random_uuid() primary key,
name text not null,
slug text unique not null,
created_at timestamptz default now(),
updated_at timestamptz default now()
);
-- Team members
create table public.team_members (
team_id uuid references public.teams on delete cascade,
user_id uuid references public.profiles on delete cascade,
role text not null check (role in ('owner', 'admin', 'member')),
created_at timestamptz default now(),
primary key (team_id, user_id)
);
-- RLS Policies
alter table public.profiles enable row level security;
alter table public.teams enable row level security;
alter table public.team_members enable row level security;
-- Users can read/update their own profile
create policy "Users can view own profile" on public.profiles
for select using (auth.uid() = id);
create policy "Users can update own profile" on public.profiles
for update using (auth.uid() = id);
-- Team members can view their teams
create policy "Team members can view teams" on public.teams
for select using (
exists (
select 1 from public.team_members
where team_id = teams.id and user_id = auth.uid()
)
);
-- Indexes
create index profiles_email_idx on public.profiles(email);
create index team_members_user_id_idx on public.team_members(user_id);
create index team_members_team_id_idx on public.team_members(team_id);
Content/Blog Platform
-- Posts create table public.posts ( id uuid default gen_random_uuid() primary key, title text not null, slug text unique not null, content text, excerpt text, author_id uuid references auth.users on delete cascade, published boolean default false, published_at timestamptz, created_at timestamptz default now(), updated_at timestamptz default now() ); -- Tags create table public.tags ( id uuid default gen_random_uuid() primary key, name text unique not null, slug text unique not null, created_at timestamptz default now() ); -- Post tags (many-to-many) create table public.post_tags ( post_id uuid references public.posts on delete cascade, tag_id uuid references public.tags on delete cascade, primary key (post_id, tag_id) ); -- RLS alter table public.posts enable row level security; alter table public.tags enable row level security; -- Anyone can read published posts create policy "Anyone can view published posts" on public.posts for select using (published = true); -- Authors can manage their own posts create policy "Authors can manage own posts" on public.posts for all using (auth.uid() = author_id); -- Indexes create index posts_author_id_idx on public.posts(author_id); create index posts_published_idx on public.posts(published); create index posts_slug_idx on public.posts(slug);
E-commerce/Marketplace
-- Products
create table public.products (
id uuid default gen_random_uuid() primary key,
name text not null,
slug text unique not null,
description text,
price decimal(10,2) not null,
image_url text,
seller_id uuid references auth.users on delete cascade,
active boolean default true,
created_at timestamptz default now(),
updated_at timestamptz default now()
);
-- Orders
create table public.orders (
id uuid default gen_random_uuid() primary key,
buyer_id uuid references auth.users on delete cascade,
total decimal(10,2) not null,
status text not null check (status in ('pending', 'paid', 'shipped', 'completed', 'cancelled')),
created_at timestamptz default now(),
updated_at timestamptz default now()
);
-- Order items
create table public.order_items (
id uuid default gen_random_uuid() primary key,
order_id uuid references public.orders on delete cascade,
product_id uuid references public.products on delete restrict,
quantity int not null,
price decimal(10,2) not null,
created_at timestamptz default now()
);
-- RLS
alter table public.products enable row level security;
alter table public.orders enable row level security;
alter table public.order_items enable row level security;
-- Anyone can view active products
create policy "Anyone can view active products" on public.products
for select using (active = true);
-- Users can view their own orders
create policy "Users can view own orders" on public.orders
for select using (auth.uid() = buyer_id);
-- Indexes
create index products_seller_id_idx on public.products(seller_id);
create index orders_buyer_id_idx on public.orders(buyer_id);
create index order_items_order_id_idx on public.order_items(order_id);
💡 Pro tip:
Mix and match tables. Need posts + teams? Combine the schemas. Need products + user profiles? Merge them. These are starting points, not rigid templates.
📋 Maintenance Plan Template
Copy this into your project README or agents.md:
# Maintenance Plan ## COMMITMENT I will support this app for: **[6 months minimum / 1 year / indefinite]** ## WEEKLY TASKS (15 min) - [ ] Check error logs (Vercel/Supabase dashboard) - [ ] Review user feedback (if any) - [ ] Test core user flow (does it still work?) - [ ] Check dependencies for security updates ## MONTHLY TASKS (30 min) - [ ] Update dependencies (`npm update` or `npm audit fix`) - [ ] Review analytics (if tracking: what's working? what's not?) - [ ] Respond to support requests/issues - [ ] Check database size (free tier limits) ## SUPPORT CHANNELS - Email: [your-email] - GitHub Issues: [repo-url] - Discord/Slack: [invite-link] - Response time goal: [24 hours / 48 hours / 1 week] ## SHUTDOWN CRITERIA I will shut down this app if: - [ ] No usage for 3+ months - [ ] Can't commit to weekly checks anymore - [ ] Costs exceed [budget amount] - [ ] Security issues I can't fix ## SHUTDOWN PROCESS If shutting down: 1. Email all users 30 days in advance 2. Offer data export 3. Archive GitHub repo (don't delete) 4. Write postmortem (what worked, what didn't, lessons) ## ESCALATION If something breaks: - **P0 (Critical):** Fix within 24 hours (auth down, data loss, security) - **P1 (High):** Fix within 3 days (core feature broken) - **P2 (Medium):** Fix within 2 weeks (minor bugs, UX issues) - **P3 (Low):** Backlog (nice-to-haves, polish) ## USAGE GOALS Success metrics (check monthly): - [ ] [Metric 1]: [Target number] - [ ] [Metric 2]: [Target number] - [ ] [Metric 3]: [Target number] If below targets for 3+ months → reevaluate project. --- Last updated: [DATE]
⚠️ Why this matters:
Half my tools died because I didn't have this. Writing it down = commitment. No plan = slow abandonment.
📅 48-Hour Ship Loop
The exact checklist I use to ship MVPs in 48 hours:
Day 1: Thinking + Setup (Evening, 2-3 hrs)
| ✅ | Task | Time |
|---|---|---|
| ☐ | Run deep research prompt | 20 min |
| ☐ | Write PRD (get GO decision) | 15 min |
| ☐ | Choose tech stack | 15 min |
| ☐ | Create Supabase project + copy creds | 5 min |
| ☐ | Write agents.md | 5 min |
| ☐ | Set up database schema in Supabase | 10 min |
| ☐ | Init project + push to GitHub | 5 min |
End of Day 1: You have PRD, backend ready, project scaffolded.
Day 2: Build + Ship (Morning/Afternoon, 3-4 hrs)
| ✅ | Task | Time |
|---|---|---|
| ☐ | Build Feature #1 (MVP core) | 45 min |
| ☐ | Test Feature #1 end-to-end | 10 min |
| ☐ | Build Feature #2 | 30 min |
| ☐ | Test Feature #2 | 10 min |
| ☐ | Build Feature #3 | 30 min |
| ☐ | Full user flow test (start → finish) | 15 min |
| ☐ | Deploy to Vercel | 10 min |
| ☐ | Test on production URL | 10 min |
| ☐ | Share with 3 people for feedback | 5 min |
End of Day 2: Live MVP. Broken, but shipped.
💡 The Secret:
Day 1 = 100% thinking. Day 2 = 100% execution. No switching contexts. This is why it's fast.
⏱️ Full Timeline
| Phase | Step | Time |
|---|---|---|
| PHASE 1: THINKING | ||
| 1. Deep Research | 20 min | |
| 2. PRD | 15 min | |
| 3. Tech Design | 15 min | |
| PHASE 2: EXECUTION | ||
| 4. Agent Setup | 2 min | |
| 5. Build (Backend + Features + Deploy) | 1-3 hrs | |
| TOTAL MVP TIME | 2-4 hours | |
💡 Lessons from 7,200 Hours
| What I Did Wrong | What I Learned |
|---|---|
| Skipped research → 3 dead builds | Validate demand BEFORE building |
| Wrote 12 terrible PRDs | Ship broken, iterate fast |
| Wasted 3 weeks comparing tools | Tool doesn't matter, thinking does |
| Rebuilt backend 4 times | Supabase is enough for 90% |
| Half my tools died from neglect | Only build what you'll support 6+ months |
The real secret: Don't chase perfect. Chase shipped.
More AI Operator content:
@mikemeansbusiness_ai
Day 5 of AI Operators Series | March 2026