וייבקודינג היא פרדיגמת פיתוח תוכנה חדשה שבה המתכנת מנחה סוכן AI באמצעות הוראות בשפה טבעית, ומאפשר לבינה המלאכותית לכתוב את הקוד בפועל. המונח נטבע על ידי Andrej Karpathy (מייסד שותף של OpenAI ולשעבר מנהל ה-AI בטסלה) בציוץ מפורסם מפברואר 2025: "יש סוג חדש של תכנות שאני קורא לו וייבקודינג, שבו אתה נכנע לחלוטין לוויברציות, מאמץ את האקספוננציאלים, ושוכח שהקוד בכלל קיים."
במאמר זה, נראה כיצד לבנות דמו מלא ועובד באמצעות Claude Code כסוכן AI, Supabase כבקאנד (מסד נתונים, אימות, API) ו-Vercel לפריסה - הכל תוך שימוש בלעדי בשכבות החינמיות של שירותים אלו.
1. מה זה וייבקודינג ולמה זה מהפכני
וייבקודינג מייצג שינוי פרדיגמה מהותי בפיתוח תוכנה. במקום לכתוב קוד שורה אחר שורה, המפתח:
- מתאר מה הוא רוצה בשפה טבעית.
- סוכן ה-AI מייצר את הקוד המלא.
- המפתח בודק, מאמת ומבצע איטרציות.
למה זה עובד
- מהירות: פרויקט שהיה לוקח ימים ניתן לבנות בשעות.
- נגישות: אפילו מפתחים פחות מנוסים יכולים לבנות מוצרים עובדים.
- איטרציה מהירה: אפשר לבדוק רעיונות ולשנות כיוון הרבה יותר מהר.
- מיקוד במוצר: אתה מתמקד ב-מה במקום ב-איך.
מתי להשתמש בוייבקודינג
וייבקודינג מושלם עבור:
- דמואים ו-MVP: בניית אב טיפוס מהירה לאימות רעיון.
- האקתונים: יצירת מוצר עובד תוך שעות בודדות.
- פרויקטים צדדיים: חקירת טכנולוגיות חדשות ללא השקעת שבועות.
- הוכחת היתכנות: הדגמת אפשרות טכנית לבעלי עניין או משקיעים.
אזהרה: וייבקודינג מצוין לדמואים ואבי טיפוס. ליישומים ברמת ייצור עם דרישות אבטחה וסקלביליות גבוהות, בדיקה יסודית של הקוד שנוצר עדיין חיונית.
2. המחסנית הטכנולוגית: Claude Code + Supabase + Vercel
Claude Code
Claude Code הוא סוכן הקידוד ה-AI של Anthropic. הוא עובד ישירות בטרמינל שלך ויכול:
- לקרוא ולהבין את כל בסיס הקוד.
- ליצור, לשנות ולמחוק קבצים.
- להריץ פקודות טרמינל.
- לתקשר עם API-ים ושירותים חיצוניים.
- לנהל ניהול גרסאות עם Git.
- לבצע איטרציות אוטונומיות על שגיאות ובאגים.
# Install Claude Code npm install -g @anthropic-ai/claude-code # Start in a project directory cd my-project claude
Supabase (שכבה חינמית)
Supabase היא אלטרנטיבה בקוד פתוח ל-Firebase שמציעה:
- מסד נתונים PostgreSQL: מסד נתונים רלציוני מלא.
- אימות: התחברות עם אימייל, Google, GitHub וכו'.
- ממשקי REST ו-Realtime: נוצרים אוטומטית מהסכמה שלך.
- אחסון: לקבצים ותמונות.
- Edge Functions: פונקציות serverless.
השכבה החינמית כוללת:
| משאב | מגבלה חינמית |
|---|---|
| מסד נתונים | 500 MB |
| אחסון | 1 GB |
| רוחב פס | 5 GB |
| הפעלות Edge Function | 500K/חודש |
| משתמשים מאומתים | ללא הגבלה |
| פרויקטים | 2 פרויקטים פעילים |
Vercel (שכבה חינמית)
Vercel היא פלטפורמת הפריסה המושלמת ליישומי Next.js:
- פריסה אוטומטית מ-GitHub.
- פריסות תצוגה מקדימה לכל branch ו-PR.
- CDN גלובלי לביצועים אופטימליים.
- Serverless Functions כלולות.
- אנליטיקה בסיסית בחינם.
השכבה החינמית כוללת:
| משאב | מגבלה חינמית |
|---|---|
| רוחב פס | 100 GB/חודש |
| הרצת Serverless Function | 100 GB-שעות/חודש |
| בילדים | 6,000 דקות/חודש |
| פרויקטים | ללא הגבלה |
| פריסות | ללא הגבלה |
3. הגדרה ראשונית: הכנת הסביבה
דרישות מוקדמות
לפני שמתחילים, ודאו שיש לכם:
- Node.js 18+ מותקן.
- Git מוגדר.
- חשבון GitHub.
- חשבון Supabase (חינם ב-supabase.com).
- חשבון Vercel (חינם ב-vercel.com).
- Claude Code מותקן (
npm install -g @anthropic-ai/claude-code).
שלב 1: צור את הפרויקט
פתח את הטרמינל והפעל את Claude Code:
mkdir my-demo-app && cd my-demo-app claude
כעת תוכל להתחיל לתת ל-Claude Code הוראות בשפה טבעית:
You: Create a Next.js 15 project with App Router, TypeScript, Tailwind CSS,
and shadcn/ui. Also initialize a Git repository.
Claude Code יבצע אוטומטית:
npx create-next-app@latest . --typescript --tailwind --eslint --app --src-dir npx shadcn@latest init git init && git add . && git commit -m "Initial commit"
שלב 2: הגדר את Supabase
- עבור ל-supabase.com וצור פרויקט חדש.
- רשום את כתובת הפרויקט ומפתח ה-anon מ-Settings > API.
- חזור לטרמינל עם Claude Code:
You: Add Supabase to the project. Create a .env.local file with the variables
NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY. Configure the
Supabase client with SSR support for Next.js App Router.
Claude Code ייצור את ההגדרה המלאה:
// src/lib/supabase/client.ts import { createBrowserClient } from '@supabase/ssr'; export function createClient() { return createBrowserClient( process.env.NEXT_PUBLIC_SUPABASE_URL!, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY! ); }
// src/lib/supabase/server.ts import { createServerClient } from '@supabase/ssr'; import { cookies } from 'next/headers'; export async function createClient() { const cookieStore = await cookies(); return createServerClient( process.env.NEXT_PUBLIC_SUPABASE_URL!, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, { cookies: { getAll() { return cookieStore.getAll(); }, setAll(cookiesToSet) { cookiesToSet.forEach(({ name, value, options }) => cookieStore.set(name, value, options) ); }, }, } ); }
4. בניית הדמו: אפליקציית ניהול משימות
בואו נבנה דמו קונקרטי: אפליקציית ניהול משימות עם אימות, CRUD מלא וממשק מודרני.
הגדרת סכמת מסד הנתונים
תנו ל-Claude Code הוראות ליצור את הסכמה:
You: Create a SQL migration for Supabase with the following tables:
1. profiles: id (uuid, FK to auth.users), username (text), avatar_url (text),
created_at
2. projects: id (uuid), name (text), description (text), owner_id (uuid, FK
to profiles), created_at
3. tasks: id (uuid), title (text), description (text), status (enum:
todo/in_progress/done), priority (enum: low/medium/high), project_id (uuid,
FK to projects), assigned_to (uuid, FK to profiles), due_date (timestamp),
created_at, updated_at
Enable Row Level Security on all tables and create appropriate policies.
Claude Code ייצר מיגרציה מלאה:
-- Create enum types CREATE TYPE task_status AS ENUM ('todo', 'in_progress', 'done'); CREATE TYPE task_priority AS ENUM ('low', 'medium', 'high'); -- Profiles table CREATE TABLE profiles ( id UUID REFERENCES auth.users ON DELETE CASCADE PRIMARY KEY, username TEXT UNIQUE, avatar_url TEXT, created_at TIMESTAMPTZ DEFAULT NOW() ); -- Projects table CREATE TABLE projects ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, name TEXT NOT NULL, description TEXT, owner_id UUID REFERENCES profiles(id) ON DELETE CASCADE NOT NULL, created_at TIMESTAMPTZ DEFAULT NOW() ); -- Tasks table CREATE TABLE tasks ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, title TEXT NOT NULL, description TEXT, status task_status DEFAULT 'todo', priority task_priority DEFAULT 'medium', project_id UUID REFERENCES projects(id) ON DELETE CASCADE NOT NULL, assigned_to UUID REFERENCES profiles(id), due_date TIMESTAMPTZ, created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ DEFAULT NOW() ); -- Enable RLS ALTER TABLE profiles ENABLE ROW LEVEL SECURITY; ALTER TABLE projects ENABLE ROW LEVEL SECURITY; ALTER TABLE tasks ENABLE ROW LEVEL SECURITY; -- Profiles policies CREATE POLICY "Users can view own profile" ON profiles FOR SELECT USING (auth.uid() = id); CREATE POLICY "Users can update own profile" ON profiles FOR UPDATE USING (auth.uid() = id); -- Projects policies CREATE POLICY "Users can view own projects" ON projects FOR SELECT USING (auth.uid() = owner_id); CREATE POLICY "Users can create projects" ON projects FOR INSERT WITH CHECK (auth.uid() = owner_id); CREATE POLICY "Users can update own projects" ON projects FOR UPDATE USING (auth.uid() = owner_id); CREATE POLICY "Users can delete own projects" ON projects FOR DELETE USING (auth.uid() = owner_id); -- Tasks policies CREATE POLICY "Users can view tasks in their projects" ON tasks FOR SELECT USING ( project_id IN (SELECT id FROM projects WHERE owner_id = auth.uid()) ); CREATE POLICY "Users can create tasks in their projects" ON tasks FOR INSERT WITH CHECK ( project_id IN (SELECT id FROM projects WHERE owner_id = auth.uid()) ); CREATE POLICY "Users can update tasks in their projects" ON tasks FOR UPDATE USING ( project_id IN (SELECT id FROM projects WHERE owner_id = auth.uid()) ); CREATE POLICY "Users can delete tasks in their projects" ON tasks FOR DELETE USING ( project_id IN (SELECT id FROM projects WHERE owner_id = auth.uid()) );
ניתן להריץ מיגרציה זו ישירות מלוח הבקרה של Supabase (SQL Editor) או דרך ה-CLI.
יצירת טיפוסי TypeScript
You: Generate TypeScript types from the Supabase database and save them to src/types/database.ts
npx supabase gen types typescript --project-id YOUR_PROJECT_ID > src/types/database.ts
בניית ממשק המשתמש
עכשיו מגיע החלק החזק ביותר של וייבקודינג. תנו ל-Claude Code הוראות ברמה גבוהה:
You: Create a dashboard page for the task management app with:
1. Sidebar with navigation between projects
2. Kanban view with 3 columns (Todo, In Progress, Done) with drag & drop
3. Modal to create/edit tasks
4. Header with user avatar and logout
5. Modern design with shadcn/ui and Tailwind
Use data from Supabase with React Server Components where possible
and Client Components only where interactivity is needed.
Claude Code יבנה את כל הממשק, רכיב אחר רכיב.
הוספת אימות
You: Add a complete authentication system with:
1. Login page with email/password and GitHub login
2. Registration page
3. Middleware to protect authenticated routes
4. Automatic redirect for unauthenticated users
5. Automatic profile creation after registration
Claude Code יגדיר את ה-middleware של Next.js ואת דפי האימות:
// src/middleware.ts import { createServerClient } from '@supabase/ssr'; import { NextResponse, type NextRequest } from 'next/server'; export async function middleware(request: NextRequest) { let supabaseResponse = NextResponse.next({ request }); const supabase = createServerClient( process.env.NEXT_PUBLIC_SUPABASE_URL!, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, { cookies: { getAll() { return request.cookies.getAll(); }, setAll(cookiesToSet) { cookiesToSet.forEach(({ name, value }) => request.cookies.set(name, value) ); supabaseResponse = NextResponse.next({ request }); cookiesToSet.forEach(({ name, value, options }) => supabaseResponse.cookies.set(name, value, options) ); }, }, } ); const { data: { user } } = await supabase.auth.getUser(); if (!user && !request.nextUrl.pathname.startsWith('/auth')) { const url = request.nextUrl.clone(); url.pathname = '/auth/login'; return NextResponse.redirect(url); } return supabaseResponse; } export const config = { matcher: ['/((?!_next/static|_next/image|favicon.ico|auth).*)'], };
5. דפוסי וייבקודינג מתקדמים
פרומפטינג איטרטיבי
הסוד לוייבקודינג אפקטיבי הוא איטרציה. אל תנסו לתאר הכל בפרומפט אחד. התקדמו בשלבים:
שלב 1: "Create the base layout with header and sidebar"
שלב 2: "Add the project list in the sidebar with a button to create new ones"
שלב 3: "Create the Kanban view in the main area"
שלב 4: "Add drag & drop between columns"
שלב 5: "Implement the modal to create new tasks"
שלב 6: "Add toast notifications for user feedback"
טיפ: ככל שהפרומפט ספציפי וקונטקסטואלי יותר, כך התוצאה טובה יותר. ל-Claude Code יש גישה לכל בסיס הקוד, כך שהוא יכול לשלב פיצ'רים חדשים בצורה קוהרנטית.
טיפול בשגיאות
כשמשהו לא עובד (וזה יקרה), אפשר פשוט לומר:
You: I'm getting this error in the console: "TypeError: Cannot read property
'map' of undefined" in the TaskList component. Fix it.
Claude Code ינתח את הקוד, יזהה את הבעיה ויתקן אותה.
ריפקטורינג עם AI
You: The Dashboard component has become too large. Split it into smaller,
reusable components while maintaining the same functionality.
בדיקות
You: Add tests with Vitest for utility functions and Playwright tests for
the authentication and task creation flow.
6. פריסה ב-Vercel: מקוד לעולם
שלב 1: Push ל-GitHub
You: Create an appropriate .gitignore, commit everything, and push to a new
GitHub repository called "my-demo-app".
git add . git commit -m "feat: complete task management demo" gh repo create my-demo-app --public --push --source=.
שלב 2: חבר את Vercel
- עבור ל-vercel.com ולחץ על "Add New Project."
- ייבא את מאגר ה-GitHub שיצרת זה עתה.
- הוסף משתני סביבה:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEY
- לחץ על "Deploy."
שלב 3: הגדר דומיין מותאם אישית (אופציונלי)
Vercel מספקת URL חינמי כמו my-demo-app.vercel.app. לדומיין מותאם אישית:
You: Add the configuration for a custom domain in vercel.json
פריסות תצוגה מקדימה
בכל פעם שפותחים Pull Request ב-GitHub, Vercel יוצרת אוטומטית פריסת תצוגה מקדימה עם URL ייחודי. מושלם להצגת שינויים לפני merge.
7. אופטימיזציות לדמו שלך
ביצועים
You: Optimize the app's performance:
1. Add loading states with Suspense and skeletons
2. Implement caching with Next.js unstable_cache
3. Optimize images with next/image
4. Add SEO metadata for each page
Realtime עם Supabase
פיצ'ר שתמיד מרשים בדמואים הוא realtime:
You: Add realtime synchronization for tasks using Supabase Realtime.
When a user updates a task, all other users should see the change
in real time without refreshing.
'use client'; import { useEffect, useState } from 'react'; import { createClient } from '@/lib/supabase/client'; import type { Task } from '@/types/database'; export function useRealtimeTasks(projectId: string) { const [tasks, setTasks] = useState<Task[]>([]); const supabase = createClient(); useEffect(() => { const channel = supabase .channel('tasks-changes') .on( 'postgres_changes', { event: '*', schema: 'public', table: 'tasks', filter: `project_id=eq.${projectId}`, }, (payload) => { if (payload.eventType === 'INSERT') { setTasks((prev) => [...prev, payload.new as Task]); } else if (payload.eventType === 'UPDATE') { setTasks((prev) => prev.map((t) => t.id === payload.new.id ? (payload.new as Task) : t ) ); } else if (payload.eventType === 'DELETE') { setTasks((prev) => prev.filter((t) => t.id !== payload.old.id) ); } } ) .subscribe(); return () => { supabase.removeChannel(channel); }; }, [projectId, supabase]); return tasks; }
מצב כהה
You: Add dark mode support with a toggle in the header.
Use Tailwind dark classes and save the preference in localStorage.
8. שיטות עבודה מומלצות לוייבקודינג אפקטיבי
1. היו ספציפיים בפרומפטים
❌ "Make a nice page"
✅ "Create a landing page with a hero section with a purple-blue gradient,
a features section with 3 cards with icons, and an orange CTA button"
2. ספקו הקשר
❌ "Add authentication"
✅ "Add authentication with Supabase Auth. The project uses Next.js 15 App
Router with TypeScript. I want email/password login and OAuth with GitHub.
Use the SSR pattern with @supabase/ssr"
3. בצעו איטרציות בצעדים קטנים
אל תנסו לבנות הכל בפרומפט אחד. התקדמו בהדרגה:
- פריסה בסיסית
- פיצ'ר אחד בכל פעם
- עיצוב וליטוש
- טיפול בשגיאות
- בדיקות
4. בדקו את הקוד שנוצר
וייבקודינג לא אומר לא לקרוא את הקוד. תמיד בדקו:
- אבטחה: מדיניות RLS, אימות קלט, סניטיזציית נתונים.
- ביצועים: שאילתות N+1, רכיבי צד לקוח מיותרים.
- שיטות עבודה מומלצות: מבנה פרויקט, מוסכמות שמות.
5. השתמשו ב-Git באסטרטגיה
You: Commit the changes with a descriptive message after each completed feature.
זה מאפשר לחזור לגרסה קודמת אם משהו משתבש.
9. עלויות: האם זה באמת הכל בחינם?
הנה פירוט עלויות לכל שירות:
| שירות | תוכנית חינמית | מתי משלמים |
|---|---|---|
| Claude Code | דורש מנוי Anthropic (מ-$20/חודש) או מפתח API | מיד, אבל הערך עצום |
| Supabase | שכבה חינמית נדיבה (2 פרויקטים, 500MB DB) | מעבר למגבלות השכבה החינמית |
| Vercel | שכבה חינמית לפרויקטים אישיים | לצוותים או שימוש מסחרי |
| GitHub | חינם למאגרים ציבוריים ופרטיים | תכונות Enterprise |
הערה: Claude Code דורש מנוי או קרדיטי API, אבל ההחזר על ההשקעה מבחינת מהירות הפיתוח יוצא דופן. עבור דמו או MVP, העלות הכוללת היא בסביבות $20.
אלטרנטיבות AI חינמיות
אם רוצים לשמור על עלויות אפסיות, אפשר להשתמש ב:
- Cursor (שכבה חינמית עם מגבלות).
- GitHub Copilot (חינם לסטודנטים ולקוד פתוח).
- Codeium/Windsurf (שכבה חינמית נדיבה).
10. מדמו למוצר: השלבים הבאים
ברגע שהדמו שלך חי, כך להמשיך:
- אספו משוב: שתפו את הדמו עם משתמשים פוטנציאליים ואספו דעות.
- בצעו איטרציות מהירות: השתמשו בוייבקודינג ליישום השינויים המבוקשים.
- עקבו אחר מדדים: Vercel Analytics ו-Supabase Dashboard נותנים לכם נתונים חיוניים.
- הרחיבו כשצריך: שדרגו לתוכניות בתשלום רק כשאימתתם את הביקוש.
סיכום
וייבקודינג עם Claude Code, Supabase ו-Vercel מייצג שילוב חזק לבניית דמואים ו-MVP בזמן שיא. מה שנהג לקחת שבועות פיתוח ניתן כעת להשיג תוך שעות בודדות, עם רמת איכות גבוהה להפתיע.
המפתח הוא לגשת לוייבקודינג עם חשיבה נכונה: זה לא על "לא לדעת לתכנת" אלא על הגברת היכולות שלך עם כלי AI. ככל שאתה יודע יותר על הטכנולוגיות הבסיסיות (React, SQL, אימות, פריסה), כך תהיה יעיל יותר בהנחיית סוכן ה-AI לתוצאה הרצויה.
עתיד פיתוח התוכנה כאן, ועלות ההתחלה מעולם לא הייתה נמוכה יותר. צרו את הדמו שלכם, אמתו אותו עם משתמשים אמיתיים, ובנו את המוצר הגדול הבא.
רשימת בדיקה לדמו הראשון שלך:
- Claude Code מותקן ומוגדר
- פרויקט Supabase נוצר עם סכמת מסד נתונים
- פרויקט Next.js מאותחל עם shadcn/ui
- אימות מוגדר
- CRUD מלא מיושם
- UI מודרני ורספונסיבי
- נפרס ב-Vercel
- URL לשיתוף מוכן למשוב