Files
megatest/docs/PROJECT_STEPS_FA.md
2026-03-23 00:47:20 +03:30

6.5 KiB

توضیح مرحله‌به‌مرحلهٔ پروژه — فرم‌ساز (Form Builder)

هدف کلی

ساخت یک اپلیکیشن تک‌صفحه‌ای (SPA) به نام فرم‌ساز که کاربر بعد از ورود (لاگین) بتواند با کشیدن المان‌ها از یک پالت، فرم دلخواه بسازد، ذخیره کند و بعداً دقیقاً مثل چیدمان خودش دوباره ببیند.


مرحله ۱ — ورود کاربر (لاگین)

  • یک صفحهٔ لاگین ساده (مثلاً نام کاربری / رمز یا فقط یک دکمه «ورود» برای تست).
  • بعد از لاگین موفق، کاربر به داشبورد هدایت می‌شود.
  • نیازی به بک‌اند نیست؛ می‌توان لاگین را فقط در فرانت و با state ساده یا Vuex شبیه‌سازی کرد.

مرحله ۲ — داشبورد و چیدمان کلی

  • بعد از لاگین، داشبورد نمایش داده می‌شود.
  • چیدمان پیشنهادی:
    • سمت راست: پالت المان‌ها (پالت فرم‌ساز).
    • وسط/چپ: پنل اصلی (بوم) که کاربر المان‌ها را اینجا می‌گذارد و فرم را می‌سازد.
  • بهتر است پالت در سمت راست صفحه باشد.

مرحله ۳ — پالت المان‌ها (سمت راست)

پالت شامل المان‌هایی است که کاربر می‌تواند بکشد و روی بوم رها کند:

المان توضیح اعتبارسنجی / تنظیمات
Input box ورودی متن نوع: رنگ / عدد / رشته / چک‌باکس / رادیو — اعتبارسنجی: اجباری (require)، min، max
Select box انتخاب‌گر نوع: تکی یا چندتایی — اعتبارسنجی: اجباری (Require)
Range slider اسلایدر محدوده اعتبارسنجی: اجباری، steps، min، max

کاربر هر المان را که بخواهد از پالت برمی‌دارد و در موقعیت دلخواه روی پنل اصلی قرار می‌دهد.


مرحله ۴ — بوم فرم‌ساز (پنل اصلی)

  • کاربر المان‌ها را از پالت کشیده و در این پنل رها می‌کند (Drag & Drop).
  • برای هر المان باید بتوان مشخص کرد:
    • موقعیت (مثلاً x, y یا چیدمان grid/flex).
    • عرض و ارتفاع (طول و عرض المان).
  • چیدمان نهایی باید قابل ذخیره باشد تا بعداً عیناً رندر شود.

مرحله ۵ — تنظیمات و اعتبارسنجی هر فیلد

  • برای هر فیلد (Input، Select، Slider) کاربر باید بتواند:
    • ولیدیشن‌ها را تعیین کند (مثلاً اجباری بودن).
    • برای فیلدهای متنی: حداقل و حداکثر تعداد کاراکتر (min/max length).
  • برای Slider: steps، min، max.
  • برای Select: Require و در صورت نیاز گزینه‌های چندتایی.

مرحله ۶ — ذخیرهٔ فرم و خروجی JSON

  • هر فرمی که ساخته می‌شود باید یک نام داشته باشد.
  • ذخیره به صورت محلی (مثلاً در مرورگر یا در state/Vuex):
    • در تسک گفته شده اگر فریمورک Vue.js باشد، در Vuex ذخیره شود.
  • خروجی نهایی = یک فایل (ساختار) JSON که شامل همهٔ اطلاعات است:
    • نوع و ترتیب المان‌ها
    • موقعیت و اندازهٔ هر المان
    • تنظیمات و ولیدیشن‌ها

مرحله ۷ — نمایش و بازسازی فرم از روی JSON

  • بعد از ذخیره، باید بتوان از روی همان JSON فرم را دوباره رندر کرد.
  • خروجی باید کاملاً دقیق مطابق چیدمان کاربر باشد (طول و عرض المان‌ها و مکان قرارگیری آن‌ها مهم است).

مرحله ۸ — جدول فرم‌های ذخیره‌شده

  • جدولی که تمام فرم‌های ذخیره‌شده را نشان می‌دهد.
  • قابلیت‌ها:
    • صفحه‌بندی (Pagination).
    • جستجو بر اساس نام فرم.
  • داده‌ها از همان ذخیرهٔ محلی (مثلاً Vuex) خوانده می‌شوند؛ نیازی به بک‌اند نیست.

مرحله ۹ — ذخیرهٔ محلی اطلاعات پنل

  • اطلاعات پنل (تعداد المان‌ها، تنظیمات گرفته‌شده از کاربر و …) هم به صورت محلی ذخیره شوند.
  • در صورت استفاده از Vue.js، در Vuex ذخیره شود.
  • هیچ نیازی به ارتباط با Back-end نیست.

مرحله ۱۰ — ظاهر و واکنش‌گرایی

  • المان‌ها و رابط کاربری تا حد امکان زیبا و جذاب باشند.
  • اگر اپ Responsive باشد، به عنوان یک نکتهٔ مثبت در نظر گرفته می‌شود.

جمع‌بندی مراحل به ترتیب پیاده‌سازی پیشنهادی

  1. لاگین → ورود به داشبورد
  2. داشبورد → چیدمان کلی (پالت راست + بوم وسط/چپ)
  3. پالت → تعریف المان‌ها (Input، Select، Slider) و قابلیت کشیدن
  4. بوم → Drag & Drop، قرار دادن المان، موقعیت و اندازه
  5. تنظیمات فیلد → ولیدیشن، min/max، steps و …
  6. ذخیره → نام فرم + ذخیره در Vuex و خروجی JSON
  7. بازسازی → رندر دقیق فرم از روی JSON
  8. جدول → لیست فرم‌ها + صفحه‌بندی + جستجو بر اساس نام
  9. پایداری → ذخیرهٔ محلی/Vuex برای پنل و فرم‌ها
  10. ظاهر و Responsive → زیبایی و واکنش‌گرایی

تکنولوژی‌های پروژه

  • Vue 3 + TypeScript + Vite
  • Vue Router — مسیریابی (لاگین / داشبورد)
  • Vuex — state و ذخیرهٔ محلی فرم‌ها و اطلاعات پنل
  • Tailwind CSS — استایل
  • Ant Design Vue — کامپوننت‌های آماده (دکمه، جدول، فرم، Input و …)