وبلاگ / راهنمای مسیر یادگیری و فناوری
راهنمای مسیر یادگیری و فناوری

آموزش v0 by Vercel؛ ساخت اپ Full-Stack از Prompt تا Pull Request

راهنمای عملی ساخت اپ Full-Stack با v0؛ از تعریف نیاز و طراحی رابط تا اتصال Database، حفاظت از Environment Variable، GitHub Branch، Pull Request، Preview و انتشار روی Vercel.

· ۲۲ بازدید

ابزار ساخت نرم‌افزار با زبان طبیعی از است. می‌توانید یک رابط، صفحه فرود یا اپ Full-Stack را توصیف کنید و کد قابل اجرا بگیرید. تفاوت مهم با یک مولد تصویر رابط این است که پروژه می‌تواند به Database، API Route، Environment Variable، و Deployment واقعی متصل شود.

با این حال خروجی قابل کلیک به‌معنای محصول آماده Production نیست. در این آموزش یک داشبورد پشتیبانی مشتری می‌سازیم و مسیر را از Brief تا Pull Request جلو می‌بریم. تمرکز روی تصمیم‌هایی است که AI نباید به‌جای تیم حدس بزند: مالکیت داده، مجوزها، Secret، Branch و معیار پذیرش.

by چیست؟

طبق مستندات رسمی، یک Pair Programmer است که ایده را از زبان طبیعی به UI و کد تبدیل می‌کند. پروژه ایجادشده به یک Project در متصل می‌شود و می‌تواند از Deployment، Environment Variable و Integrationهای همان پلتفرم استفاده کند. برای اپ‌های Full-Stack به‌طور پیش‌فرض از استفاده می‌کند، زیرا Server Component، Server Action و Route Handler را کنار رابط قرار می‌دهد.

قابلیتکاربردکنترل تیم
Prompt to UIساخت سریع Layout و ComponentDesign System و Accessibility
Full-StackRoute، Action و منطق سرورValidation و Authorization
Databaseاتصال به Supabase، Neon یا UpstashSchema، Migration و Backup
Branch، Commit و Pull RequestReview و Protection Rule
Previewبازبینی هر تغییر پیش از Mergeداده آزمایشی و دسترسی محدود
Deployانتشار روی Secret، Domain و Monitoring

اگر مفهوم ساخت نرم‌افزار با گفتگو برایتان جدید است، راهنمای وایب کدینگ امن مرز Prototype و Production را توضیح می‌دهد. برای مقایسه یک Workflow مشابه نیز راهنمای ساخت MVP امن با Lovable را ببینید.

پروژه نمونه: داشبورد پشتیبانی مشتری

اپ نمونه چهار Entity دارد: User، Customer، Ticket و Reply. مشتری Ticket ثبت می‌کند؛ Agent فقط Ticketهای تخصیص‌یافته را می‌بیند؛ Manager همه Ticketهای تیم و گزارش زمان پاسخ را مشاهده می‌کند. نسخه اول پرداخت، پیامک و AI Agent ندارد.

قبل از ورود به ، Acceptance Criteria را بنویسید. کاربر باید بتواند وارد شود، Ticket بسازد، پاسخ‌ها را ببیند و فقط به داده خودش دسترسی داشته باشد. Agent باید Ticket را Assign و وضعیت را تغییر دهد. Manager باید گزارش کلی ببیند. این معیارها Prompt را کوتاه‌تر و Review را دقیق‌تر می‌کنند.

نقش و مجوز را پیش از صفحه تعریف کنید

عملیاتCustomerAgentManager
دیدن Ticket خودبلهدر صورت تخصیصبله
دیدن همه Ticketهاخیرخیربله
ثبت Replyروی Ticket خودروی Ticket تخصیص‌یافتهبله
تغییر مسئولخیرخیربله
مدیریت کاربرخیرخیربله

این جدول را داخل Prompt بیاورید. عبارت کلی «Authentication امن اضافه کن» کافی نیست. Authentication فقط هویت را مشخص می‌کند؛ Authorization تعیین می‌کند آن هویت به کدام رکورد و عملیات دسترسی دارد.

مدل داده را کوچک نگه دارید

برای Ticket فیلدهای Subject، Description، Status، Priority، CustomerId، AssigneeId و CreatedAt کافی‌اند. Reply نیز TicketId، AuthorId، Body و CreatedAt دارد. حذف قطعی را در MVP غیرفعال کنید و وضعیت Archived یا Closed داشته باشید تا سابقه پشتیبانی از بین نرود.

Prompt اول را مثل Brief محصول بنویسید

Prompt اولیه باید هدف، کاربر، نقش، صفحه، مدل داده، محدودیت و معیار پذیرش را مشخص کند. ظاهر را توصیف کنید، اما اجازه ندهید بحث رنگ جای امنیت و جریان کار را بگیرد.

یک داشبورد پشتیبانی فارسی و RTL با بساز. نقش‌های Customer، Agent و Manager و Entityهای Customer، Ticket و Reply را در نظر بگیر. مشتری فقط Ticket و Replyهای خودش را ببیند؛ Agent فقط Ticketهای تخصیص‌یافته را مدیریت کند؛ Manager همه تیم را ببیند و مسئول Ticket را تغییر دهد. ابتدا فقط UI با داده Mock بساز و صفحات Login، فهرست Ticket، جزئیات Ticket و Dashboard مدیر را ارائه کن. حالت Loading، Empty، Error و Permission Denied را هم طراحی کن. قبل از افزودن Database یا Authentication، Plan و فرض‌ها را نمایش بده.

با Mock Data شروع کنید. این کار اجازه می‌دهد Navigation، RTL، فرم و حالت‌های مختلف را بدون درگیر شدن با Schema واقعی بررسی کنید. پس از تأیید جریان، لایه داده را در یک مرحله جدا اضافه کنید.

Workflow مرحله‌ای Full-Stack

مستندات توسعه افزایشی را پیشنهاد می‌کند: ابتدا UI، بعد Data Layer، سپس Authentication و CRUD و در پایان بهینه‌سازی. ترکیب همه این موارد در یک Prompt، خطای پنهان و اصلاح پرهزینه ایجاد می‌کند.

  1. Layout و Componentها را با داده Mock بسازید.
  2. Schema و Relationshipها را تعریف و فقط یک Database متصل کنید.
  3. Authentication را اضافه و Session را آزمایش کنید.
  4. Authorization سطح رکورد را در Server اعمال کنید.
  5. CRUD اصلی Ticket و Reply را تکمیل کنید.
  6. Validation سمت Client و Server را اضافه کنید.
  7. Log، Error State و Rate Limit را بررسی کنید.
  8. کد را به Branch متصل و Pull Request باز کنید.

برای هر مرحله یک Chat یا Branch قابل بازگشت داشته باشید. اگر تغییر معماری است، ابتدا از بخواهید Plan، فایل‌های درگیر و ریسک‌ها را توضیح دهد. تولید کد بدون برنامه، مسئولیت Review را حذف نمی‌کند.

انتخاب Database و طراحی دسترسی

از Integrationهای پایگاه داده مانند Supabase، Neon و Upstash پشتیبانی می‌کند. انتخاب را بر اساس نوع داده، Query، Transaction، Backup و مهارت تیم انجام دهید. برای Ticket و Reply یک Database رابطه‌ای معمولاً مدل طبیعی‌تری دارد؛ Cache یا Queue مسئله‌ای جداست.

نیازگزینه متداولپرسش پیش از اتصال
داده رابطه‌ای و گزارشPostgreSQL مانند Neon یا SupabaseMigration و Backup چگونه انجام می‌شود؟
Cache و Rate LimitUpstashTTL و رفتار هنگام قطعی چیست؟
فایل و AttachmentBlob Storageنوع فایل و دسترسی URL چگونه کنترل می‌شود؟
Prototype رابطMock Dataچه زمانی باید داده واقعی جایگزین شود؟

هر Query باید مالک رکورد یا نقش را در Server بررسی کند. فیلترکردن لیست در Browser امنیت نیست؛ کاربر می‌تواند Request مستقیم بسازد. برای Attachment نوع MIME، اندازه، نام فایل و مجوز دانلود را کنترل کنید.

Environment Variable و Secret

در فقط متغیرهایی که عمداً با پیشوند NEXT_PUBLIC_ تعریف می‌شوند برای کد Browser در دسترس‌اند. API Key خصوصی، Database URL و Token سرویس نباید این پیشوند را داشته باشند یا داخل Component سمت Client استفاده شوند.

  • Secret را در تنظیمات Environment پروژه نگه دارید.
  • برای Development، Preview و Production مقدار جدا داشته باشید.
  • کلید را داخل Prompt، Screenshot، Git یا Log قرار ندهید.
  • دسترسی Secret را به کمترین اعضای لازم محدود کنید.
  • در صورت افشا، کلید را فوراً Rotate کنید؛ حذف Commit کافی نیست.
  • فراخوانی حساس را در Route Handler یا Server Action انجام دهید.

درباره استفاده خطرناک از متغیر عمومی هشدار می‌دهد، اما مسئولیت نهایی با تیم است. Bundle ساخته‌شده و Network tab را بررسی کنید تا Secret در JavaScript یا پاسخ API دیده نشود.

، Branch و Pull Request

در Workflow جدید Git، هر Chat می‌تواند Branch جدا داشته باشد و تغییر هر پیام Commit شود. مستقیم به main Push نمی‌کند و نتیجه برای Merge به Pull Request می‌رود. پس از اتصال Repository، منبع اصلی کد است؛ حذف Repository می‌تواند بازیابی پروژه را مختل کند.

  1. Repository را در Organization درست و به‌صورت Private بسازید.
  2. Protection Rule و Review اجباری را روی Branch اصلی فعال کنید.
  3. نام Branch را به Feature یا Ticket مرتبط کنید.
  4. Diff هر Commit تولیدشده را بخوانید.
  5. Test و Build را در CI اجرا کنید.
  6. Preview Deployment را با داده غیرحساس بازبینی کنید.
  7. فقط پس از تأیید، PR را Merge کنید.

Review باید تغییر Schema، Permission، Dependency، Environment و Routeهای جدید را پوشش دهد. یک UI زیبا می‌تواند هم‌زمان Authorization ناقص یا Dependency آسیب‌پذیر داشته باشد.

چک‌لیست Review کد تولیدشده

حوزهسؤال Reviewمعیار رد
Inputسمت Server اعتبارسنجی می‌شود؟اعتماد کامل به Client
Authorizationمالکیت هر رکورد بررسی می‌شود؟فقط مخفی کردن Button
Secretدر Server Environment است؟NEXT_PUBLIC یا Hard-code
Errorپیام امن و قابل فهم است؟Stack Trace عمومی
DatabaseMigration و Index مشخص‌اند؟تغییر مستقیم و بدون Backup
Dependencyواقعاً لازم و معتبر است؟Package ناشناخته یا بلااستفاده

Preview را مانند Production آزمایش کنید

Preview برای بازبینی بسیار مفید است، اما ممکن است تنظیمات و داده متفاوتی داشته باشد. سه حساب آزمایشی برای Customer، Agent و Manager بسازید و URL مستقیم رکورد دیگران را امتحان کنید. سناریوی موفق تنها بخشی از Test است.

  • فرم خالی، متن بسیار بلند و فایل نامعتبر
  • Session منقضی و کاربر بدون نقش
  • شناسه Ticket متعلق به کاربر دیگر
  • Database کند یا موقتاً قطع
  • دو ویرایش هم‌زمان روی یک Ticket
  • صفحه موبایل، Keyboard و Screen Reader
  • عدم وجود Secret در HTML و Network Response

داده Preview را مصنوعی نگه دارید. اطلاعات واقعی مشتری، Token یا فایل محرمانه را وارد محیطی نکنید که سیاست دسترسی آن هنوز تأیید نشده است.

Deploy امن روی

Deploy از یک Deployment در ایجاد می‌کند. پیش از انتشار دامنه اصلی، Environmentهای Production، اتصال Database، Migration و Health Check را تأیید کنید. دسترسی Preview و Production را یکسان فرض نکنید.

  1. Build را بدون خطای بحرانی اجرا کنید.
  2. متغیرهای Production را جدا و محدود تنظیم کنید.
  3. Migration را روی Backup یا Staging آزمایش کنید.
  4. Domain و Redirect و SSL را کنترل کنید.
  5. Smoke Test ورود، ساخت Ticket و پاسخ را اجرا کنید.
  6. Log، Error Rate، Latency و هزینه را پایش کنید.
  7. یک Rollback Point سالم نگه دارید.

اشتباه‌های رایج

  • یک Prompt برای کل محصول: دامنه تغییر بزرگ و Review مبهم می‌شود.
  • اتصال زودهنگام داده واقعی: خطای Permission به Incident تبدیل می‌شود.
  • استفاده از NEXT_PUBLIC برای Secret: مقدار وارد Bundle مرورگر می‌شود.
  • Merge فقط بر اساس ظاهر Preview: کد، Schema و دسترسی بررسی نمی‌شوند.
  • حذف Repository: پس از اتصال ، منبع اصلی کد ممکن است از بین برود.
  • اعتماد به ادعای Production-ready: Test و Monitoring همچنان ضروری‌اند.

جمع‌بندی

می‌تواند مسیر Wireframe تا اپ Full-Stack و Pull Request را کوتاه کند. بهترین نتیجه زمانی حاصل می‌شود که UI، Data، Authentication و انتشار را مرحله‌ای بسازید و هر تغییر در Branch مستقل Review شود.

برای اپ پشتیبانی، امنیت یعنی Authorization سمت Server، Secret غیرعمومی، داده آزمایشی، PR اجباری و تست با نقش‌های متفاوت. سرعت AI ارزشمند است، اما معیار انتشار باید همان استاندارد مهندسی نرم‌افزار باقی بماند.

امروز فقط UI داشبورد پشتیبانی را با Mock Data بسازید؛ سپس ماتریس سه‌نقشی دسترسی را به Prompt اضافه کنید و پیش از اتصال Database، Plan تولیدشده را بازبینی کنید.

منابع رسمی