# ساخت اپلیکیشن بدون کدنویسی؛ تفاوت اپ‌ساز قالبی و ساخت با هوش مصنوعی

> برای ساخت اپلیکیشن بدون کدنویسی، اول نوع خروجی و جریان اصلی را مشخص کن. اپ‌سازهای قالبی و بصری برای نیازهایی که با بخش‌های آماده جورند قابل بررسی‌اند؛ تولید کد با پرامپت می‌تواند برای طراحی و منطق متفاوت کمک کند. وب‌اپ، PWA و اپ نیتیو یک خروجی نیستند. در هر مسیر، ذخیرهٔ داده، نقش‌ها، امکان خروج و شرایط نگهداری را با یک نمونهٔ کوچک بسنج.

- Published: 2026-10-17T17:09:19.457Z
- Updated: 2026-10-31T07:03:43.608Z
- Author: نیکان نورافکن

---
**ساخت اپلیکیشن با هوش مصنوعی** یعنی نیاز و قواعد برنامه را توضیح بدهی، خروجی اولیه را بگیری و رفتار آن را با دادهٔ آزمایشی بررسی و اصلاح کنی. برای شروع لازم نیست خودت کد بنویسی؛ اما باید بدانی کاربر چه کاری انجام می‌دهد و چه نتیجه‌ای باید ذخیره شود. ساخت اپلیکیشن بدون کدنویسی هم چند مسیر دارد: انتخاب قالب و چیدن بخش‌های آماده، طراحی بصری منطق برنامه یا توضیح‌دادن خواسته به ابزاری که کد تولید می‌کند. برای انتخاب، فقط نپرس «کدام راحت‌تر است؟»؛ بپرس خروجی چه نوع اپی است، داده کجا می‌ماند و وقتی نیازت تغییر کرد چه راهی داری.

این مقاله برای کسی است که یک ابزار داخلی، سرویس رزرو یا اپ سادهٔ مشتریان می‌خواهد و برنامه‌نویس نیست. مسیرهای قالبی و پرامپتی را با یک نیاز مشترک مقایسه می‌کنیم. گزینه‌های قالبی و بصری را با مستندات رسمی توضیح می‌دهیم و یک پروژهٔ واقعی کُندا را با همان پرامپت CRM بررسی می‌کنیم. تست ساخت مقایسه‌ای در همهٔ ابزارها یا زمان‌سنجی رقبا انجام نشده است. آزمون CRM مربوط به ۲۴ مهر ۱۴۰۵ است. متن، منابع خروجی و کادر شروع کُندا در ۶ آبان ۱۴۰۵ بازبینی شدند؛ آزمون آن پروژه تکرار نشده و اصلاح ایراد ثبت‌شده تأیید نمی‌شود.

## پاسخ سریع: اپ‌ساز قالبی یا ساخت با هوش مصنوعی؟

اگر فرایندت با ماژول‌های آمادهٔ یک اپ‌ساز جور است و می‌خواهی کمتر درگیر تصمیم‌های فنی شوی، مسیر قالبی را بررسی کن. اگر منطق خاص، طراحی متفاوت یا خروج کد برایت مهم است، ساخت با پرامپت می‌تواند مناسب‌تر باشد. هر دو مسیر به تعریف نیاز، آزمون و رسیدگی بعد از انتشار نیاز دارند؛ هیچ‌کدام مسئولیت محصول را حذف نمی‌کنند.

| پرسش | مسیر قالبی یا بصری | مسیر تولید کد با AI |
| --- | --- | --- |
| از کجا شروع می‌شود؟ | قالب، داده یا ماژول آماده | توضیح نیاز و نمونهٔ مورد انتظار |
| تغییر ظاهر چطور است؟ | در محدودهٔ تنظیمات ادیتور | با درخواست تغییر یا ویرایش کد، بسته به ابزار |
| منطق خاص چه می‌شود؟ | وابسته به امکانات و افزونه‌ها | قابل تولید است، اما باید بررسی شود |
| خروج کد داریم؟ | سیاست هر سرویس متفاوت است | در بعضی ابزارها بله؛ شرایط پلن را بخوان |
| نگهداری با کیست؟ | بخشی با سرویس، بخشی با صاحب اپ | وابسته به محل اجرا و خدمات پلتفرم |

اگر فقط سایت معرفی یا فروشگاه محتوایی می‌خواهی، [ساخت سایت بدون کدنویسی](/blog/build-website-without-coding) سؤال دقیق‌تری است. در اینجا تمرکز روی برنامه‌ای است که کاربر در آن کاری انجام می‌دهد و داده‌ای تغییر می‌کند.

## قبل از انتخاب ابزار، نوع خروجی را مشخص کن

وب‌اپ در مرورگر اجرا می‌شود. PWA وب‌اپی است که با امکانات و تنظیمات مناسب می‌تواند تجربه‌ای شبیه نصب روی دستگاه بدهد. اپ نیتیو یا بستهٔ اندروید و iOS، خروجی و مسیر انتشار دیگری دارد. یک صفحهٔ واکنش‌گرا به‌خودی‌خود فایل APK یا اپ آمادهٔ فروشگاه نیست.

[مستندات MDN دربارهٔ PWA](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) این تفاوت را توضیح می‌دهد. پیش از خرید پلن، نام دقیق خروجی را از سرویس بپرس. «روی موبایل باز می‌شود»، «قابل نصب است» و «در فروشگاه منتشر می‌شود» سه گزارهٔ متفاوت‌اند.

کُندا در این مقایسه در گروه ساخت وب‌اپ با هوش مصنوعی قرار می‌گیرد. نباید صرفاً به‌خاطر واژهٔ «اپلیکیشن»، تولید خودکار اپ نیتیو یا انتشار مستقیم در کافه‌بازار را از آن انتظار داشته باشی.

### وب‌اپ، APK یا قالب وردپرس؛ کدام را می‌خواهی؟

| نیاز واقعی تو | خروجی را با چه نامی بخواه؟ | قبل از انتخاب چه چیزی را ثابت کنی؟ |
| --- | --- | --- |
| تیم در مرورگر مشتری ثبت کند و پیگیری را ببیند | وب‌اپ با داده و دسترسی مشخص | ثبت، مشاهدهٔ دوباره و دسترسی هر نقش |
| فایل نصب اندروید و انتشار در فروشگاه لازم داری | بستهٔ اندروید؛ مانند APK یا AAB | تحویل فایل، امضا، مجوزها و مسیر بررسی فروشگاه |
| آیکن روی گوشی و تجربهٔ نصب‌پذیر می‌خواهی | PWA، اگر امکانات و تنظیمات لازم فراهم باشد | نصب روی دستگاه هدف؛ آفلاین‌بودن را جدا امتحان کن |
| ظاهر سایت وردپرسی را عوض می‌کنی | قالب سازگار با وردپرس | نصب روی وردپرس و سازگاری با محتوای موجود |

کُندا را در این مقاله برای **ساخت وب‌اپ با هوش مصنوعی** بررسی می‌کنیم. تولید صفحهٔ وب، اثبات دریافت APK یا فایل قابل نصب در وردپرس نیست. طبق [تعریف رسمی قالب وردپرس](https://developer.wordpress.org/themes/getting-started/what-is-a-theme/)، قالب با محتوای ذخیره‌شده در وردپرس کار می‌کند؛ ظاهر مشابه، سازگاری فنی ایجاد نمی‌کند.

اگر هنوز ایده‌ات بزرگ است، فقط یک کار را انتخاب کن: «مدیر مشتری بسازد و مسئول پرونده آن را ببیند». گزارش پیشرفته، ارسال پیام و پرداخت را تا عبور همین جریان از آزمون کنار بگذار. برای تمرین کنترل‌های پنل، [آموزش وایب کدینگ با کُندا](/blog/vibe-coding-tutorial) را دنبال کن؛ این مقاله روی انتخاب مسیر و نتیجهٔ قابل اعتماد تمرکز دارد.

## اپ‌سازهای قالبی و بصری چگونه کار می‌کنند؟

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

### کار از قالب شروع می‌شود یا از داده و قواعد؟

فرض کن همان اپ پیگیری مشتریان را می‌خواهی. در یک ابزار ماژول‌محور باید ببینی فهرست مشتری، فرم و نقش‌های مورد نیازت از قبل وجود دارند یا نه. در ابزار داده‌محور، جدول مشتریان را با ستون‌های «نام»، «مسئول» و «مرحله» تعریف می‌کنی؛ بعد فهرست و فرم را به آن وصل می‌کنی. در ویرایشگر بصری منطق هم مشخص می‌کنی: «وقتی وضعیت تغییر کرد، این رکورد به‌روزرسانی شود».

مسیر معمول چهار قدم دارد: تعریف داده، چیدن صفحه، اتصال دکمه‌ها و فرم‌ها، و تنظیم دسترسی. بدون نوشتن کد هم باید این تصمیم‌ها را بگیری. یک صفحهٔ آماده می‌تواند شروع را آسان کند؛ اما نمی‌داند کدام مشتری متعلق به کدام همکار است، مگر این قاعده را تعریف کنی.

| گزینه | نقطهٔ شروع | برای چه نیازی بررسی‌اش کنی؟ | در نمونهٔ CRM چه چیزی را بسنجی؟ |
| --- | --- | --- | --- |
| اپتو | قالب و ماژول‌های آماده | اپ محتوایی، فروشگاهی یا خدماتی با بخش‌های شناخته‌شده | ماژول مشتریان، فیلد سفارشی و دسترسی مسئول پرونده |
| AppSheet | جدول‌ها و رابطهٔ میان داده‌ها | فرم و ابزار داخلی مبتنی بر اطلاعات تیم | ارتباط مشتری و مسئول، همگام‌سازی و فیلتر امنیتی |
| Bubble | صفحه، داده و قواعد رفتار | وب‌اپ با جریان‌های قابل تنظیم | ثبت و تغییر وضعیت، ورود کاربران و قواعد حریم خصوصی |
| FlutterFlow | رابط بصری و منطق اپ | پروژه‌ای که طراحی رابط و مسیر توسعهٔ Flutter برایش مهم است | اتصال فرم به بک‌اند، احراز هویت و خروج کد |

این جدول، پیشنهاد مسیر بررسی ماست؛ رتبه‌بندی حاصل از اجرای یک پروژه در همهٔ ابزارها نیست. جزئیات زیر بر اساس منابع رسمی بررسی‌شده در ۲۴ مهر ۱۴۰۵ نوشته شده‌اند.

### اپتو: وقتی ماژول آماده به فرایندت نزدیک است

[اپتو](https://appeto.ir/) ماژول‌های فروشگاهی، محتوایی، ورود کاربران و فرم را معرفی می‌کند. مسیرش این است که قالب و امکانات مورد نیاز را انتخاب کنی و محتوا را در پنل وارد کنی. برای مثال، کاتالوگ محصولات همراه با فرم درخواست، به این مدل نزدیک‌تر از یک CRM با قواعد پیچیدهٔ تقسیم مشتریان است؛ این برداشت از دامنهٔ ماژول‌هاست، نه نتیجهٔ تست ساخت CRM در اپتو.

صفحهٔ رسمی، خروجی‌های APK و AAB، همچنین IPA و PWA را اعلام می‌کند. دریافت این خروجی‌ها، شرایط پلن و آماده‌بودن برای انتشار در فروشگاه را پیش از خرید روشن کن؛ در این بررسی فایلی از حساب آزمایشی دریافت نکرده‌ایم. دستیار AI اپتو برای محتوا، تصویر و آیکن هم معرفی شده است. پس وجود AI به‌تنهایی معیار تفاوت ابزارها نیست؛ مهم است ساختار و منطق اپ را چطور تغییر می‌دهی.

<figure><img src="/blog/images/build-app-without-coding/appeto-site.webp" width="1440" height="900" alt="صفحهٔ رسمی اپتو در Chrome با معرفی اپلیکیشن‌ساز، ماژول‌ها و دستیار هوش مصنوعی" loading="lazy" /><figcaption>اسکرین‌شات واقعی صفحهٔ عمومی اپتو در ۲۳ مهر ۱۴۰۵؛ تصویر محیط حساب یا نتیجهٔ ساخت آزمایشی نیست. اطلاعات معرفی محصول در ۲۴ مهر دوباره بررسی شد.</figcaption></figure>

### AppSheet: وقتی اطلاعاتت از قبل جدول دارد

اگر مشتریان و مسئول هر پرونده را در یک فایل جدولی نگه می‌داری، مسیر داده‌محور را بررسی کن. [راهنمای رسمی AppSheet](https://support.google.com/appsheet/answer/10099795?hl=en) از تعریف موجودیت‌ها، اتصال جدول، انتخاب نما و تنظیم رفتار و امنیت شروع می‌کند. برای CRM می‌توانی «مشتریان» و «اعضا» را دو جدول مرتبط در نظر بگیری و فرم ورود اطلاعات را روی آن‌ها بسازی.

نکتهٔ تعیین‌کننده، داده‌ای است که به هر کاربر می‌رسد. [فیلتر امنیتی AppSheet](https://support.google.com/appsheet/answer/10104488?hl=en) ردیف‌های قابل دریافت را با شرط محدود می‌کند؛ برای مثال، مشتریان تخصیص‌یافته به کاربر واردشده. این با پنهان‌کردن یک نما فرق دارد. منبع داده، نیاز به همگام‌سازی و پلن لازم برای کنترل دسترسی را با نمونهٔ خودت بررسی کن.

### Bubble: وقتی قواعد رفتار از چیدمان مهم‌ترند

برای وب‌اپی که ثبت مشتری، تغییر مرحله و نقش‌های متفاوت دارد، Bubble یکی از گزینه‌های قابل بررسی است. تصمیم اصلی فقط جای دکمه نیست؛ باید مشخص کنی چه داده‌ای تغییر می‌کند و چه کسی اجازهٔ دیدن آن را دارد. مثلاً «مدیر همهٔ پرونده‌ها را ببیند، همکار فقط پروندهٔ واگذارشده به خودش» را به قاعدهٔ داده تبدیل کنی.

[مستندات Privacy Rules در Bubble](https://manual.bubble.io/help-guides/data/the-database/protecting-data-with-privacy-rules) توضیح می‌دهد که این قواعد روی سرور اعمال می‌شوند، پیش از آنکه داده به دستگاه کاربر برسد. بنابراین مخفی‌کردن یک جدول در صفحه جای تنظیم مجوز داده را نمی‌گیرد. برای انتخاب، همین سناریوی دو نقش را بساز و دسترسی خواندن و تغییر رکورد را جدا بررسی کن؛ اینجا نتیجهٔ اجرای عملی آن در Bubble را گزارش نمی‌کنیم.

### FlutterFlow: وقتی مسیر توسعهٔ اپ هم مهم است

[FlutterFlow](https://docs.flutterflow.io/) محیط توسعهٔ بصری برای اپ موبایل، وب و دسکتاپ است. رابط را با اجزای بصری می‌چینی و منطق و اتصال داده را تنظیم می‌کنی. برای کسی که می‌خواهد از طراحی بصری شروع کند و بعد روی پروژهٔ Flutter ادامه بدهد، این مسیر ارزش بررسی دارد؛ اما اتصال بک‌اند و احراز هویت همچنان کارهای مشخص پروژه‌اند.

[راهنمای رسمی خروج پروژه](https://docs.flutterflow.io/flutterflow-cli/exporting/) امکان دریافت کد را توضیح می‌دهد. خروج کد را با انتقال آمادهٔ همهٔ داده‌ها و سرویس‌ها یکی نگیر. پلن مورد نیاز، حساب سرویس‌های متصل و امکان اجرای پروژهٔ خروجی را قبل از انتخاب بررسی کن.

### کدام محدودیت را همان اول امتحان کنی؟

یک نیاز سخت اما ضروری انتخاب کن: «مشتری را از همکار اول به همکار دوم واگذار کن؛ همکار اول دیگر به آن دسترسی نداشته باشد». اگر ابزار با ماژول یا قواعد فعلی‌اش این را پوشش نمی‌دهد، مسیر توسعهٔ اختصاصی و هزینه‌اش را بپرس. همین آزمون از مقایسهٔ چند صفحهٔ خانه مفیدتر است. برای استفاده از ایران هم زبان رابط، نمایش RTL، دسترسی حساب و شرایط پرداخت را با وضعیت خودت بسنج؛ از معرفی رسمی امکانات نمی‌توان پشتیبانی فارسی یا دسترسی یکسان همهٔ کاربران را نتیجه گرفت.

## ساخت با پرامپت چه فرقی دارد؟

در ساخت پرامپتی، به‌جای انتخاب تک‌تک ماژول‌ها، نتیجه و قواعد را توضیح می‌دهی و ابزار فایل‌ها و رفتار برنامه را می‌سازد. سپس با درخواست‌های کوچک اصلاح می‌کنی. این آزادی می‌تواند برای منطق اختصاصی کمک‌کننده باشد، اما مدل ممکن است بخشی را اشتباه بفهمد یا ظاهری بسازد که هنوز به دادهٔ واقعی وصل نیست.

در کُندا می‌توانی همین نیاز را به زبان فارسی بنویسی، خروجی را در پیش‌نمایش باز کنی و روی بخش مشخصی مثل فرم یا نقش‌ها بازخورد بدهی. پایین‌تر، به‌جای یک مثال فرضی، پروژهٔ ساخته‌شده با پرامپت همین مقاله را می‌بینی: داشبورد، مشتریان، اقدامات و اعضای تیم. مزیت این شروع، داشتن چیزی قابل بررسی است؛ بعد می‌توانی اصلاح‌ها را با مسئلهٔ مشخص پیش ببری.

وجود کد قابل خروج هم به معنی انتقال کامل محصول نیست. دیتابیس، فایل‌های آپلودی، رازهای اتصال و سرویس‌های بیرونی را جدا بررسی کن. برای مثال، [راهنمای خروج پروژهٔ Lovable](https://docs.lovable.dev/introduction/faq) میان کد و داده تفاوت می‌گذارد. این پرسش را برای هر ابزار دیگری، از جمله کُندا، هم بپرس.

## یک نیاز مشترک: اپ پیگیری مشتریان

فرض کن یک تیم کوچک خدماتی می‌خواهد نام مشتری، راه ارتباطی، مرحلهٔ پیگیری و مسئول پرونده را ثبت کند. در نسخهٔ اول، گزارش پیچیده، پیامک خودکار و اتصال حسابداری لازم نیست. همین محدودکردن دامنه، انتخاب ابزار را قابل مقایسه می‌کند.

<div class="bg-surface rounded-xl sm:rounded-2xl p-3.5 sm:p-7 shadow-xs border border-border flex flex-col gap-3 sm:gap-4 not-prose my-6 sm:my-8 overflow-hidden">
<div class="flex items-center gap-2 pb-0.5">
<span class="w-2 h-2 rounded-full bg-primary-container"></span>
<h3 class="font-bold text-text-primary text-xs sm:text-base m-0">
مدل سادهٔ اپ پیگیری مشتریان
</h3>
</div>
<div class="w-full bg-surface-container-low/60 rounded-lg sm:rounded-xl p-2.5 sm:p-6 flex flex-col gap-2.5 sm:gap-3.5 relative border border-border/50">
<div class="flex items-stretch gap-2 sm:gap-5 relative group">
<div class="flex flex-col items-center shrink-0 w-7 sm:w-10">
<div class="w-7 h-7 sm:w-9 sm:h-9 rounded-full flex items-center justify-center text-[11px] sm:text-xs font-bold shrink-0 transition-all bg-surface text-text-primary border-2 border-primary-container/50 shadow-xs group-hover:border-primary-container">
<span>۰۱</span>
</div>
<div class="w-0.5 flex-1 min-h-[28px] sm:min-h-[36px] bg-gradient-to-b from-primary-container/60 via-border to-border/60 my-1 relative flex items-center justify-center">
<span class="material-symbols-outlined text-[11px] sm:text-[13px] text-text-secondary/70 bg-surface-container-low px-0.5 rounded-full">keyboard_arrow_down</span>
</div>
</div>
<div class="flex-1 bg-surface rounded-lg sm:rounded-xl p-3 sm:p-5 border transition-all shadow-xs flex flex-col gap-1.5 sm:gap-2 border-border hover:border-primary-container/40 hover:shadow-sm">
<div class="flex items-center justify-between gap-2 sm:gap-3 flex-wrap">
<div class="flex items-center gap-1.5 sm:gap-2 flex-wrap">
<span class="text-[10px] sm:text-xs text-primary font-bold px-2 py-0.5 rounded-md bg-surface-container">
مرحلهٔ ۰۱
</span>
<h4 class="font-bold text-text-primary text-xs sm:text-base m-0">
مشتری
</h4>
</div>
</div>
<p class="text-[11.5px] sm:text-sm text-text-secondary leading-relaxed pt-0.5 m-0">
نام و یک راه ارتباطی؛ فقط اطلاعات لازم را نگه دار.
</p>
</div>
</div>
<div class="flex items-stretch gap-2 sm:gap-5 relative group">
<div class="flex flex-col items-center shrink-0 w-7 sm:w-10">
<div class="w-7 h-7 sm:w-9 sm:h-9 rounded-full flex items-center justify-center text-[11px] sm:text-xs font-bold shrink-0 transition-all bg-surface text-text-primary border-2 border-primary-container/50 shadow-xs group-hover:border-primary-container">
<span>۰۲</span>
</div>
<div class="w-0.5 flex-1 min-h-[28px] sm:min-h-[36px] bg-gradient-to-b from-primary-container/60 via-border to-border/60 my-1 relative flex items-center justify-center">
<span class="material-symbols-outlined text-[11px] sm:text-[13px] text-text-secondary/70 bg-surface-container-low px-0.5 rounded-full">keyboard_arrow_down</span>
</div>
</div>
<div class="flex-1 bg-surface rounded-lg sm:rounded-xl p-3 sm:p-5 border transition-all shadow-xs flex flex-col gap-1.5 sm:gap-2 border-border hover:border-primary-container/40 hover:shadow-sm">
<div class="flex items-center justify-between gap-2 sm:gap-3 flex-wrap">
<div class="flex items-center gap-1.5 sm:gap-2 flex-wrap">
<span class="text-[10px] sm:text-xs text-primary font-bold px-2 py-0.5 rounded-md bg-surface-container">
مرحلهٔ ۰۲
</span>
<h4 class="font-bold text-text-primary text-xs sm:text-base m-0">
پیگیری
</h4>
</div>
</div>
<p class="text-[11.5px] sm:text-sm text-text-secondary leading-relaxed pt-0.5 m-0">
مسئول، مرحله و زمان اقدام بعدی را مشخص کن.
</p>
</div>
</div>
<div class="flex items-stretch gap-2 sm:gap-5 relative group">
<div class="flex flex-col items-center shrink-0 w-7 sm:w-10">
<div class="w-7 h-7 sm:w-9 sm:h-9 rounded-full flex items-center justify-center text-[11px] sm:text-xs font-bold shrink-0 transition-all bg-surface text-text-primary border-2 border-primary-container/50 shadow-xs group-hover:border-primary-container">
<span>۰۳</span>
</div>
<div class="w-0.5 flex-1 min-h-[28px] sm:min-h-[36px] bg-gradient-to-b from-primary-container/60 via-border to-border/60 my-1 relative flex items-center justify-center">
<span class="material-symbols-outlined text-[11px] sm:text-[13px] text-text-secondary/70 bg-surface-container-low px-0.5 rounded-full">keyboard_arrow_down</span>
</div>
</div>
<div class="flex-1 bg-surface rounded-lg sm:rounded-xl p-3 sm:p-5 border transition-all shadow-xs flex flex-col gap-1.5 sm:gap-2 border-border hover:border-primary-container/40 hover:shadow-sm">
<div class="flex items-center justify-between gap-2 sm:gap-3 flex-wrap">
<div class="flex items-center gap-1.5 sm:gap-2 flex-wrap">
<span class="text-[10px] sm:text-xs text-primary font-bold px-2 py-0.5 rounded-md bg-surface-container">
مرحلهٔ ۰۳
</span>
<h4 class="font-bold text-text-primary text-xs sm:text-base m-0">
نقش‌ها
</h4>
</div>
</div>
<p class="text-[11.5px] sm:text-sm text-text-secondary leading-relaxed pt-0.5 m-0">
مدیر و همکار عادی مجوزهای روشن و متفاوت داشته باشند.
</p>
</div>
</div>
<div class="flex items-stretch gap-2 sm:gap-5 relative group">
<div class="flex flex-col items-center shrink-0 w-7 sm:w-10">
<div class="w-7 h-7 sm:w-9 sm:h-9 rounded-full flex items-center justify-center text-[11px] sm:text-xs font-bold shrink-0 transition-all bg-surface text-text-primary border-2 border-primary-container/50 shadow-xs group-hover:border-primary-container">
<span>۰۴</span>
</div>
</div>
<div class="flex-1 bg-surface rounded-lg sm:rounded-xl p-3 sm:p-5 border transition-all shadow-xs flex flex-col gap-1.5 sm:gap-2 border-border hover:border-primary-container/40 hover:shadow-sm">
<div class="flex items-center justify-between gap-2 sm:gap-3 flex-wrap">
<div class="flex items-center gap-1.5 sm:gap-2 flex-wrap">
<span class="text-[10px] sm:text-xs text-primary font-bold px-2 py-0.5 rounded-md bg-surface-container">
مرحلهٔ ۰۴
</span>
<h4 class="font-bold text-text-primary text-xs sm:text-base m-0">
آزمون
</h4>
</div>
</div>
<p class="text-[11.5px] sm:text-sm text-text-secondary leading-relaxed pt-0.5 m-0">
یک رکورد بساز، تغییر بده و با حساب دیگر دوباره بررسی کن.
</p>
</div>
</div>
</div>
<div class="text-text-secondary text-[11px] sm:text-xs pt-1 flex items-start gap-1.5 sm:gap-2">
<span class="material-symbols-outlined text-xs sm:text-sm text-text-secondary/70 shrink-0 mt-0.5">info</span>
<span class="leading-relaxed">سناریوی مشترک برای انتخاب ابزار؛ نتیجهٔ آزمون واقعی کُندا پایین‌تر آمده است.</span>
</div>
</div>

در مسیر قالبی، ببین آیا می‌توانی فیلدها و وضعیت‌ها را بسازی و دسترسی هر همکار را محدود کنی. در مسیر پرامپتی، همین موارد را با معیار پذیرش توضیح بده. اگر فقط بگویی «یک CRM زیبا بساز»، احتمالاً نمودارهای نمایشی می‌گیری، نه فرایند واقعی پیگیری.

<div class="relative bg-surface rounded-xl sm:rounded-2xl p-4 sm:p-7 shadow-xs border border-border overflow-hidden not-prose my-6 sm:my-8">
<div class="absolute top-0 right-0 w-1.5 sm:w-2.5 h-full bg-primary-container"></div>
<div class="flex flex-col sm:flex-row sm:items-center justify-between pb-3 flex-wrap gap-2.5">
<div class="flex items-center gap-2">
<span class="px-2.5 py-1 rounded-full bg-primary-container text-text-on-neon text-[11px] sm:text-xs font-bold shadow-xs">دستورالعمل ۰۱</span>
<span class="text-xs sm:text-sm text-text-secondary font-bold">پرامپت اجراشده در پروژهٔ کُندا</span>
</div>
<button class="konda-copy-directive-btn inline-flex items-center justify-center gap-1.5 text-text-primary hover:text-primary text-xs font-bold transition-all cursor-pointer px-3.5 py-1.5 rounded-full bg-surface-container-low hover:bg-surface-container border border-border active:scale-95 shadow-xs w-full sm:w-auto">
<span class="material-symbols-outlined text-sm">content_copy</span>
<span class="btn-text">کپی دستورالعمل</span>
</button>
</div>
<p class="text-xs sm:text-sm text-text-primary bg-surface-container-low p-3.5 sm:p-5 rounded-lg sm:rounded-xl leading-relaxed font-sans select-all text-right border border-border/60 m-0" dir="rtl">
«یک وب‌اپ فارسی برای پیگیری مشتریان یک تیم خدماتی بساز. هر مشتری نام، راه ارتباطی، مسئول، مرحلهٔ پیگیری و تاریخ اقدام بعدی داشته باشد. وضعیت‌ها «جدید»، «در حال پیگیری» و «بسته‌شده» باشند. مدیر بتواند اعضا را مدیریت کند؛ همکار عادی فقط دادهٔ مجاز خودش را ببیند. مجوزها در سمت سرور هم بررسی شوند. از دادهٔ ساختگی مشخص استفاده کن. ذخیره‌سازی واقعی، حالت خالی و خطای ارسال را جدا پیاده کن. اگر بخشی متصل نیست، آن را آماده معرفی نکن.»
</p>
</div>

## درخواست را در پنل کُندا کجا بنویسی؟

برای پروژهٔ تازه، متن را در کادر ایدهٔ [داشبورد کُندا](https://kondaai.com/dashboard) بازبینی کن. در تصویر زیر، همان درخواست CRM وارد شده؛ دکمهٔ «بساز» زده نشده است. آماده‌کردن متن را با تولید موفق محصول یکی ندان. شرایط ورود، دسترسی حساب و اعتبار قابل استفاده را قبل از ارسال بررسی کن.

<figure><img src="/blog/images/build-app-without-coding/composer-2026-10-28.png" width="1274" height="717" alt="کادر فعلی ایده در داشبورد کُندا با پرامپت CRM فارسی و دکمهٔ بساز، پیش از ارسال" loading="lazy" /><figcaption>ثبت واقعی کادر شروع در ۶ آبان ۱۴۰۵، در حالت مهمان؛ فقط متن وارد شد. این تصویر مدرک اجرای ساخت، مصرف اعتبار یا تأیید مجوزهای اپ نیست.</figcaption></figure>

اگر پروژه از قبل وجود دارد، درخواست اصلاح را در گفتگوی همان پروژه بنویس؛ کادر داشبورد برای شروع پروژهٔ تازه است. اگر می‌خواهی از نمونه شروع کنی، [قالب‌های آمادهٔ کُندا](https://kondaai.com/templates) و [راهنمای انتخاب و تغییر قالب](/blog/ai-template-builder) را ببین. قالب را با داده و قواعد خودت تطبیق بده و آزمون دسترسی را دوباره انجام بده.

## این پرامپت را در کُندا امتحان کردیم؛ چه تحویل گرفتیم؟

پرامپت بالا در گفت‌وگوی ذخیره‌شدهٔ پروژهٔ «پیگیری مشتریان خدمات» وجود دارد. خروجی همان پروژه را در مرورگر باز کردیم؛ ساخت تازه‌ای برای گرفتن این تصاویر شروع نکردیم. داشبورد، مشتریان، اقدامات پیگیری، مدیریت اعضا و تنظیمات دسترسی در پیش‌نمایش دیده می‌شوند. نام‌ها و اطلاعات نمونهٔ تصاویر، دادهٔ آزمایشی‌اند و معرفی مشتریان واقعی کُندا نیستند.

<figure style="max-width:25rem;margin-inline:auto"><img src="/blog/images/build-app-without-coding/crm-build-history.webp" width="370" height="430" alt="پرامپت فارسی CRM و پیام پایان ساخت پروژهٔ پیگیری مشتریان خدمات در کُندا" loading="lazy" /><figcaption>برشی از گفت‌وگوی همان پروژه؛ پیام سیستم از اجرای مرورگر و آزمون مسیر اصلی می‌گوید. آزمون‌های مستقل ما در ادامه آمده‌اند؛ زمان و اعتبار ساخت اولیه اندازه‌گیری نشده است.</figcaption></figure>

### ۱. از داشبورد به کار اصلی برس

با دکمهٔ حساب آزمایشی مدیر وارد شدیم. داشبورد در شروع پنج مشتری نمونه را در سه وضعیت «جدید»، «در حال پیگیری» و «بسته‌شده» نشان می‌داد. کنار آمار، موعد اقدام بعدی و آخرین پیگیری‌ها قرار داشت؛ بنابراین صفحه فقط یک نمودار تزئینی نبود و به پرونده‌ها و اقدام بعدی راه داشت.

<figure><img src="/blog/images/build-app-without-coding/crm-manager-dashboard.webp" width="1440" height="657" alt="داشبورد فارسی CRM ساخته‌شده با کُندا با پنج مشتری نمونه و سه مرحلهٔ پیگیری" loading="lazy" /><figcaption>تصویر آزمون ثبت‌شدهٔ ۲۴ مهر ۱۴۰۵. نمای مدیر پیش از افزودن رکورد آزمایشی ما؛ آمار، سررسیدها و آخرین اقدامات کنار هم دیده می‌شوند.</figcaption></figure>

در فهرست مشتریان، جستجو، فیلتر وضعیت و انتخاب مسئول وجود داشت. فرم «ثبت مشتری جدید» هم نام، روش ارتباط، مسئول، مرحله و تاریخ اقدام بعدی داشت؛ یعنی فیلدهای اصلی پرامپت به بخش قابل استفادهٔ رابط تبدیل شده بودند. تاریخ‌های نمونه در این نسخه میلادی‌اند؛ اگر تیم با تقویم شمسی کار می‌کند، آن را جدا در معیار پذیرش بگذار.

### ۲. خطای ارسال را هم امتحان کن، نه فقط حالت موفق

در فرم، نام «مشتری آزمایشی مقاله کُندا — دادهٔ ساختگی» و نشانی غیرواقعی `crm-demo@example.invalid` را وارد کردیم و مسئول را سارا انتخاب کردیم. گزینهٔ صریح «شبیه‌سازی خطا» در خود اپ وجود داشت. با فعال‌کردن آن و زدن ذخیره، پیام خطا ظاهر شد و نام، راه ارتباطی و یادداشت در فرم ماندند.

<figure><img src="/blog/images/build-app-without-coding/crm-simulated-error.webp" width="1440" height="657" alt="فرم ثبت مشتری با پیام خطای شبیه‌سازی‌شده و حفظ اطلاعات واردشده" loading="lazy" /><figcaption>تصویر آزمون ثبت‌شدهٔ ۲۴ مهر ۱۴۰۵. آزمون گزینهٔ شبیه‌سازی خطا در اپ؛ قطعی واقعی شبکه یا دیتابیس ایجاد نکردیم. دادهٔ فرم برای تلاش مجدد باقی ماند.</figcaption></figure>

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

<figure><img src="/blog/images/build-app-without-coding/crm-saved-after-reload.webp" width="1440" height="657" alt="رکورد مشتری آزمایشی مقاله در نتایج جستجوی CRM پس از بارگذاری مجدد" loading="lazy" /><figcaption>تصویر آزمون ثبت‌شدهٔ ۲۴ مهر ۱۴۰۵. رکورد تازه پس از رفرش پیدا شد. برای بازتولید آزمون، نام آزمایشی را جستجو کن؛ این ایمیل، راه ارتباط با شخص واقعی نیست.</figcaption></figure>

### ۳. مدیر و همکار را جدا بررسی کن

صفحهٔ مدیر، فهرست اعضا، نقش، وضعیت فعالیت و دکمه‌های ویرایش را نشان می‌داد. در این بررسی، عضوی نساختیم و نقش یا مجوز کسی را تغییر ندادیم؛ دیدن این کنترل‌ها را با آزمون کامل مدیریت اعضا یکی نمی‌گیریم.

<figure><img src="/blog/images/build-app-without-coding/crm-team.webp" width="1440" height="657" alt="صفحهٔ مدیریت اعضای تیم در CRM کُندا با نقش‌ها و وضعیت فعالیت حساب‌های نمونه" loading="lazy" /><figcaption>تصویر آزمون ثبت‌شدهٔ ۲۴ مهر ۱۴۰۵. نمای حساب مدیر؛ کنترل‌های مدیریت اعضا دیده می‌شوند، اما تغییر نقش و فعال‌سازی در این بررسی آزمایش نشده‌اند.</figcaption></figure>

سپس با دکمهٔ آزمایشی به حساب سارا رفتیم و مسیر «اعضای تیم» را باز کردیم. به‌جای فرم مدیریت، پیام «دسترسی به بخش مدیریت اعضا مسدود است» آمد. این نتیجهٔ قابل مشاهدهٔ مسیر در رابط است؛ برای تأیید امنیت سمت سرور باید درخواست مستقیم داده و عملیات غیرمجاز هم بررسی شوند. نوشتهٔ «کنترل دسترسی سمت سرور» داخل یک صفحه، جای آن آزمون را نمی‌گیرد.

<figure><img src="/blog/images/build-app-without-coding/crm-staff-denied.webp" width="1440" height="657" alt="پیام مسدودبودن مدیریت اعضای تیم در حساب همکار عادی CRM" loading="lazy" /><figcaption>تصویر آزمون ثبت‌شدهٔ ۲۴ مهر ۱۴۰۵. همان مسیر مدیریت با حساب آزمایشی همکار، پیام عدم دسترسی داد. این اسکرین‌شات مدرک یک آزمون رابط است، نه ممیزی امنیت سرور.</figcaption></figure>

### ۴. یک ایراد واقعی پیدا شد: انتساب مشتری به همکار

آزمون فقط موفقیت‌ها را ثبت نمی‌کند. در نمای مدیر، رکورد جدید ما مسئول «سارا احمدی» داشت؛ اما در حساب آزمایشی سارا، با فیلتر «همه وضعیت‌ها» و جستجوی خالی، فهرست مشتریان خالی بود. بنابراین جریان «مدیر مشتری را واگذار کند و همکار همان را ببیند» هنوز برای این نسخه تأیید نشد. علت را از روی ظاهر حدس نمی‌زنیم؛ نگاشت حساب، مسئول و مجوز باید بررسی شود.

<figure><img src="/blog/images/build-app-without-coding/crm-staff-empty.webp" width="1440" height="657" alt="حالت خالی فهرست مشتریان در حساب آزمایشی سارا با وجود انتساب رکورد در نمای مدیر" loading="lazy" /><figcaption>تصویر آزمون ثبت‌شدهٔ ۲۴ مهر ۱۴۰۵. این حالت خالی بخشی از نتیجهٔ واقعی آزمون است؛ نمایش خوب حالت خالی، اشکال انتساب مشتری را حل نمی‌کند.</figcaption></figure>

این همان جایی است که اصلاح مرحله‌ای در کُندا کاربرد دارد. به‌جای «CRM را بهتر کن»، مسئله و نتیجهٔ مورد انتظار را دقیق بگو. متن زیر پیشنهادِ مرحلهٔ بعد است؛ در این بررسی آن را اجرا نکردیم و تصویر «بعد از رفع ایراد» نداریم.

<div class="relative bg-surface rounded-xl sm:rounded-2xl p-4 sm:p-7 shadow-xs border border-border overflow-hidden not-prose my-6 sm:my-8">
<div class="absolute top-0 right-0 w-1.5 sm:w-2.5 h-full bg-primary-container"></div>
<div class="flex flex-col sm:flex-row sm:items-center justify-between pb-3 flex-wrap gap-2.5">
<div class="flex items-center gap-2">
<span class="px-2.5 py-1 rounded-full bg-primary-container text-text-on-neon text-[11px] sm:text-xs font-bold shadow-xs">دستورالعمل ۰۲</span>
<span class="text-xs sm:text-sm text-text-secondary font-bold">پیشنهاد اصلاح؛ هنوز اجرا نشده</span>
</div>
<button class="konda-copy-directive-btn inline-flex items-center justify-center gap-1.5 text-text-primary hover:text-primary text-xs font-bold transition-all cursor-pointer px-3.5 py-1.5 rounded-full bg-surface-container-low hover:bg-surface-container border border-border active:scale-95 shadow-xs w-full sm:w-auto">
<span class="material-symbols-outlined text-sm">content_copy</span>
<span class="btn-text">کپی دستورالعمل</span>
</button>
</div>
<p class="text-xs sm:text-sm text-text-primary bg-surface-container-low p-3.5 sm:p-5 rounded-lg sm:rounded-xl leading-relaxed font-sans select-all text-right border border-border/60 m-0" dir="rtl">
«در حساب مدیر، مشتری آزمایشی مقاله به سارا نسبت داده شده، اما حساب آزمایشی سارا آن را نمی‌بیند. فقط جریان انتساب و مجوز مشتری را اصلاح کن. حساب واردشده و مسئول پرونده را با شناسهٔ پایدار و معتبر تطبیق بده، نه نام نمایشی. بعد ثابت کن مدیر مشتری را به سارا واگذار می‌کند، سارا آن را می‌بیند و می‌تواند پیگیری مجاز ثبت کند، رضا به آن دسترسی ندارد و درخواست مستقیم غیرمجاز هم روی سرور رد می‌شود. اگر بک‌اند واقعی متصل نیست، آن را روشن بگو. ظاهر و بخش‌های نامرتبط را تغییر نده.»
</p>
</div>

### ۵. سابقهٔ پیگیری را کنار رکورد ببین

صفحهٔ اقدامات، نوع تعامل، انجام‌دهنده و موعد بعدی را نشان می‌داد. پس از ثبت مشتری آزمایشی، یک سطر «ثبت اولیه مشتری» با همان نام هم در این بخش دیدیم. ثبت تماس جدید یا ارسال پیامک واقعی را امتحان نکردیم؛ دیدن عنوان «ارسال پیامک» در دادهٔ نمونه به معنی اتصال سرویس ارسال نیست.

<figure><img src="/blog/images/build-app-without-coding/crm-activities.webp" width="1440" height="657" alt="صفحهٔ اقدامات پیگیری CRM با نوع تعامل، انجام‌دهنده و رکورد آزمایشی مقاله" loading="lazy" /><figcaption>تصویر آزمون ثبت‌شدهٔ ۲۴ مهر ۱۴۰۵. سابقهٔ اولیهٔ مشتری آزمایشی در فهرست اقدامات دیده شد. این صفحه مدرک ارسال پیامک یا تماس واقعی نیست.</figcaption></figure>

### نتیجهٔ این آزمون چه بود؟

| مورد | مشاهدهٔ ما در همین نسخه |
| --- | --- |
| ساختار فارسی CRM | داشبورد، مشتریان، اقدامات و اعضای تیم در مرورگر باز شدند |
| فرم مشتری | فیلدهای اصلیِ خواسته‌شده در پرامپت وجود داشتند |
| شکست ارسال | شبیه‌سازی صریح خطا، پیام داد و دادهٔ فرم را نگه داشت |
| باقی‌ماندن رکورد | مشتری آزمایشی پس از رفرش و جستجو دیده شد |
| محدودیت مسیر مدیر | حساب همکار در صفحهٔ اعضا پیام عدم دسترسی دید |
| انتساب مشتری | رکورد منتسب به سارا در حساب آزمایشی او دیده نشد؛ نیازمند اصلاح |
| امنیت سرور و دوام استقرار | با آزمون مستقیم API، بکاپ یا استقرار مستقل بررسی نشده‌اند |

در این پیش‌نمایش، ورود آنی و تغییر حساب برای تست وجود دارد. این امکانات را تنظیم ورود کاربران واقعی حساب نکن؛ قبل از استفاده با اطلاعات مشتری، حساب‌های نمایشی و دسترسی‌های تست باید بررسی و برای محیط واقعی تنظیم شوند. خروجی بررسی‌شده، پایه‌ای برای آزمون و اصلاح است؛ هنوز برچسب «CRM آمادهٔ تیم» نمی‌گیرد.

### رفرش موفق، ذخیره روی سرور را ثابت می‌کند؟

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

برای آزمون نسخهٔ خودت، یک رکورد ساختگی با نام یکتا، مثلاً «آزمون پیگیری ۰۰۱»، بساز. با حساب مجاز از یک نشست جدا آن را بررسی کن؛ شناسه یا وضعیت همان رکورد باید برگردد. سپس با حساب غیرمجاز تلاش کن. حتی عبور از این مراحل هم جای بررسی مستقیم مجوز API و بازیابی داده را نمی‌گیرد. از حساب‌های خودت و دادهٔ غیرواقعی استفاده کن.

| آزمون نسخهٔ خودت | معیار پذیرش | از کجا بفهمی هنوز تمام نشده؟ |
| --- | --- | --- |
| ثبت و بازکردن دوباره | همان رکورد با همان وضعیت در محل مورد انتظار دیده شود | فقط پیام موفقیت داری یا رکورد ناپدید می‌شود |
| واگذاری مشتری | همکار تعیین‌شده رکورد مجاز را ببیند | همان ایراد انتساب نمونهٔ مقاله تکرار شود |
| جداسازی نقش‌ها | فرد دیگر به دادهٔ نامربوط دسترسی نداشته باشد | فقط منو پنهان شده ولی داده همچنان قابل دریافت است |
| شکست ارسال | پیام روشن باشد و ورودی برای تلاش مجدد بماند | فرم پاک شود یا پیش از پاسخ معتبر «ثبت شد» بنویسد |
| حالت خالی | کار بعدی روشن باشد و رکورد ساختگی جای دادهٔ واقعی ننشیند | آمار نمونه با نتیجهٔ واقعی اشتباه شود |

[برگهٔ آزمون CRM را دریافت کن](/blog/images/build-app-without-coding/acceptance-checklist.csv) و نتیجهٔ اجرای خودت را بنویس. ردیف‌های این فایل، آزمون پیشنهادی‌اند و به معنی قبول‌شدن آن‌ها در کُندا نیستند. برای معیارهای دقیق‌تر، [چک‌لیست کنترل دسترسی](/blog/web-app-access-control-checklist) را کنار آن بگذار.

### چطور خروجی دو مسیر را منصفانه مقایسه کنی؟

برای هر دو، همان پنج رکورد ساختگی و همان دو نقش را استفاده کن. یک مشتری بساز، مسئولش را تغییر بده و بعد با حساب دیگر وارد شو. بررسی کن تغییر پس از رفرش باقی مانده و فرد غیرمجاز دادهٔ نامربوط را نمی‌بیند. سپس یک فیلد تازه، مثلاً «زمان پیگیری بعدی»، اضافه کن و ببین تغییر چقدر ساده است.

| آزمون مشترک | سؤال دقیق | چرا از ظاهر مهم‌تر است؟ |
| --- | --- | --- |
| ذخیره | بعد از خروج و ورود، رکورد برمی‌گردد؟ | داده فقط در صفحه نمانده باشد |
| نقش‌ها | همکار عادی چه چیزی را می‌بیند؟ | رابط مخفی، کنترل دسترسی نیست |
| تغییر نیاز | افزودن فیلد تازه چه اثری دارد؟ | توسعهٔ بعدی را می‌سنجی |
| خروج | دادهٔ مشتری قابل دریافت است؟ | وابستگی را می‌فهمی |
| شکست اتصال | کاربر چه پیامی می‌گیرد؟ | خطا به از دست‌رفتن کار تبدیل نشود |

این جدول، روش مقایسهٔ دو مسیر است. آزمون‌های واقعی کُندا را بالاتر جدا ثبت کرده‌ایم؛ همین سناریو در یک اپ‌ساز دیگر اجرا نشده، پس امتیاز مقایسه‌ای یا ادعای برتری عملکرد نداریم.

## رابط کاربری باید کار بعدی را روشن کند

برای کاربر غیرفنی، کیفیت متن به اندازهٔ تعداد قابلیت‌ها اهمیت دارد. نام وضعیت‌ها را از زبان تیم بگیر: «جدید»، «در حال پیگیری» و «بسته‌شده» از عبارت‌های مبهمی مثل «وضعیت ۱» روشن‌ترند. در فرم، فیلد اختیاری را مشخص کن و اطلاعاتی را که لازم نداری نخواه.

اگر هنوز مشتری ثبت نشده، به‌جای جدول خالی بنویس «اولین مشتری را اضافه کن» و دکمهٔ همان کار را نشان بده. اگر تغییر ذخیره نشد، به کاربر نگو «ذخیره شد». اگر حذف قابل برگشت نیست، متن دکمه و پیام تأیید باید دقیق باشد. این درخواست‌ها را در پرامپت یا تنظیمات ابزار بیاور؛ مدل به‌طور خودکار فرایند تیم تو را نمی‌داند.

## اپ بدون کد را می‌شود در کافه‌بازار منتشر کرد؟

پاسخ به خروجی ابزار بستگی دارد. یک وب‌اپ یا PWA، خودبه‌خود بستهٔ قابل انتشار در فروشگاه اندروید نیست. ممکن است به بسته‌بندی جدا، امضا، تنظیمات مجوز و بررسی ضوابط روز فروشگاه نیاز داشته باشی. پیش از برنامه‌ریزی فروش، نوع فایل خروجی و مسئول انجام این مراحل را با سرویس روشن کن.

اگر نیازت کارکرد آفلاین پیچیده، پردازش سنگین روی دستگاه یا دسترسی ویژه به سخت‌افزار است، از همان ابتدا سازگاری آن قابلیت را بررسی کن. شروع با یک ابزار ساده، وقتی نیاز اصلی‌ات خارج از محدودهٔ آن است، صرفه‌جویی ایجاد نمی‌کند.

## هزینهٔ واقعی، فقط اشتراک اپ‌ساز نیست

هزینه را در سه بخش ثبت کن: ساخت و اصلاح، اجرای محصول، و سرویس‌های بیرونی. اعتبار سازنده را با توکن API یک مدل برابر ندان؛ واحد و روش محاسبه متفاوت است. هزینهٔ پلن، دامنه، سرویس داده، پیامک، طراحی محتوا و زمان خودت را کنار هم بگذار. در مدل اعتباری، تعداد و اندازهٔ اصلاحات هم روی هزینه اثر می‌گذارد. در سرویس قالبی، ماژول یا خروجی خاص ممکن است به پلن دیگری نیاز داشته باشد.

[راهنمای هزینهٔ ساخت اپلیکیشن](/blog/app-development-cost-iran-ai) یک چارچوب برای مقایسهٔ پیشنهادها دارد. با آن، یک وب‌اپ آزمایشی را با پروژهٔ نیتیو چندماهه هم‌قیمت‌سنجی نکن. اول دامنهٔ کار را یکسان کن، بعد عددها را کنار هم بگذار.

## برای شرایط تو کدام مسیر مناسب‌تر است؟

<div class="bg-surface-container-low rounded-2xl p-6 sm:p-7 shadow-xs border border-border flex flex-col gap-4 not-prose my-8">
<h3 class="font-bold text-text-primary text-base">
کدام مسیر را اول امتحان کنی؟
</h3>
<ul class="flex flex-col gap-3.5 text-xs sm:text-sm text-text-secondary">
<li class="flex items-start gap-2.5">
<span class="material-symbols-outlined text-primary text-lg mt-0.5 shrink-0">check_circle</span>
<span>نیازت با ماژول‌های آماده جور است؟ یک اپ‌ساز قالبی یا بصری را بررسی کن.</span>
</li>
<li class="flex items-start gap-2.5">
<span class="material-symbols-outlined text-primary text-lg mt-0.5 shrink-0">check_circle</span>
<span>منطق یا طراحی متفاوت داری؟ تولید کد با پرامپت را با یک نمونه بسنج.</span>
</li>
<li class="flex items-start gap-2.5">
<span class="material-symbols-outlined text-primary text-lg mt-0.5 shrink-0">check_circle</span>
<span>خروجی فروشگاهی می‌خواهی؟ نوع فایل، امضا و شرایط انتشار را قبل از خرید بپرس.</span>
</li>
<li class="flex items-start gap-2.5">
<span class="material-symbols-outlined text-primary text-lg mt-0.5 shrink-0">check_circle</span>
<span>دادهٔ مشتری داری؟ دسترسی، خروج داده و بازیابی را همان اول بررسی کن.</span>
</li>
</ul>
</div>

ما سازندهٔ کُندا هستیم و در این راهنما از مسیر پرامپتی آن هم حرف می‌زنیم. اگر می‌خواهی خروجی‌های ثبت‌شده را ببینی، [مقایسهٔ Lovable و جایگزین‌هایش برای ایران](/blog/lovable-alternative-iran) را بخوان. برای شروع در [کُندا](#konda-start)، پرامپت همین مقاله را با فرایند تیم خودت تطبیق بده. نسخهٔ اول را باز کن، یک رکورد ساختگی بساز و نتیجهٔ آزمون را به درخواست اصلاح بعدی تبدیل کن. اولین معیار تو باید کارکرد جریان اصلی باشد، نه تعداد صفحه‌های ساخته‌شده.


اگر بین ابزارهای ساخت با گفتگو تصمیم می‌گیری، [مقایسهٔ Replit و Lovable](/blog/replit-vs-lovable) و [مقایسهٔ Bolt و Lovable](/blog/bolt-vs-lovable) را بر اساس نیاز فنی و مسیر تحویل بخوان.


<!-- konda-start -->

برای دقیق‌کردن نقش مدیر و همکار، [چک‌لیست کنترل دسترسی وب‌اپ](/blog/web-app-access-control-checklist) را کنار سناریوی خودت بگذار.


## راهنمای مرتبط برای قدم بعد

اگر دنبال ابزار فارسی برای شروع هستی، [راهنمای وایب کدینگ ایرانی و تفاوت وب‌اپ با APK](/blog/iranian-vibe-coding-app) را ببین. برای سنجیدن سهمیه و هزینهٔ ادامه نیز [وایب کدینگ رایگان](/blog/free-vibe-coding) را بخوان.


برای دو تمرین مشخص، [ساخت سایت ثبت سفارش با هوش مصنوعی](/blog/build-order-website-with-ai) و [ساخت داشبورد فروش با هوش مصنوعی](/blog/build-dashboard-with-ai) را ببین؛ نمونه‌های آموزشی محلی، دادهٔ ساختگی و برگهٔ آزمون دارند.


اگر جریان اصلی‌ات پشتیبانی مشتری است، [راهنمای ساخت سیستم تیکتینگ با هوش مصنوعی](https://kondaai.com/blog/build-ticketing-system-with-ai) ثبت درخواست، پاسخ کارشناس و بازگشایی را با نقش‌ها و معیار پذیرش روشن توضیح می‌دهد.


اگر مسئله‌ات ورود و خروج کالا است، [راهنمای ساخت نرم‌افزار انبارداری با هوش مصنوعی](https://kondaai.com/blog/build-inventory-software-with-ai) دفتر موجودی، تعداد نامعتبر و ارسال تکراری را با یک مثال عددی قابل بررسی جلو می‌برد.


برای سامان‌دادن کارهای تیم، [راهنمای ساخت ابزار مدیریت پروژه با هوش مصنوعی](https://kondaai.com/blog/build-project-management-tool-with-ai) یک کار را با مسئول، موعد و تغییر وضعیت دنبال می‌کند؛ معیار رفرش و سابقهٔ تغییر را هم جدا بررسی می‌کند.


## پرسش‌های متداول

### چطور بدون کدنویسی اپ بسازم؟

نیازت را به یک جریان کوچک تبدیل کن، نوع خروجی را مشخص کن و ابزار قالبی، بصری یا تولید کد را بر همان اساس انتخاب کن. داده و دسترسی را با نمونهٔ آزمایشی بررسی کن.

### فرق اپ‌ساز قالبی و ساخت با AI چیست؟

در مسیر قالبی از ماژول‌ها و تنظیمات آماده شروع می‌کنی؛ در تولید کد با AI، نیاز و قواعد را توضیح می‌دهی و خروجی کد را اصلاح می‌کنی. بعضی اپ‌سازها هم دستیار AI دارند؛ معیار، روش تغییر محصول است.

### اپ ساخته‌شده بدون کد در کافه‌بازار منتشر می‌شود؟

به نوع خروجی ابزار بستگی دارد. وب‌اپ یا PWA خودبه‌خود بستهٔ اندروید نیست. خروجی، امضا، مجوزها و ضوابط روز فروشگاه را پیش از برنامه‌ریزی انتشار بررسی کن.

### آیا خروج کد به معنی انتقال کامل محصول است؟

نه. کد، دیتابیس، فایل‌ها و تنظیمات سرویس‌های بیرونی ممکن است جدا باشند. برای انتقال، مسیر دریافت و بازیابی هرکدام را بررسی کن.

### کُندا اپ نیتیو اندروید می‌سازد؟

در این راهنما کُندا در گروه ساخت وب‌اپ با هوش مصنوعی بررسی شده است. از این قابلیت نمی‌توان تولید خودکار فایل APK یا انتشار مستقیم در فروشگاه اندروید را نتیجه گرفت.

### آیا CRM این مقاله در کُندا واقعاً تست شده است؟

بله، پروژهٔ موجود با همین پرامپت در ۲۴ مهر ۱۴۰۵ بررسی شد. یک مشتری ساختگی ثبت و پس از رفرش پیدا شد؛ شبیه‌سازی خطا دادهٔ فرم را نگه داشت و حساب همکار در بخش اعضا پیام عدم دسترسی دید. اما رکورد منتسب به سارا در حساب آزمایشی او دیده نشد. امنیت API، بکاپ و انتشار مستقل بررسی نشده‌اند.

### آیا رفرش صفحه، ذخیره‌شدن داده روی سرور را ثابت می‌کند؟

نه. داده ممکن است در مرورگر ذخیره شده باشد. رکورد ساختگی را در نشست جدا با حساب مجاز بررسی کن و دسترسی غیرمجاز را هم بسنج. محل ذخیره، کنترل API و بکاپ بررسی‌های جدا می‌خواهند.



## منابع

- [صفحهٔ رسمی اپلیکیشن‌ساز اپتو](https://appeto.ir/) (2026)
- [راهنمای PWA در MDN](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) (2026)
- [مستندات رسمی خروج کد و داده در Lovable](https://docs.lovable.dev/introduction/faq) (2026)
- [راهنمای طراحی اپ داده‌محور در AppSheet](https://support.google.com/appsheet/answer/10099795?hl=en) (2026)
- [فیلترهای امنیتی AppSheet](https://support.google.com/appsheet/answer/10104488?hl=en) (2026)
- [قواعد حریم خصوصی روی سرور در Bubble](https://manual.bubble.io/help-guides/data/the-database/protecting-data-with-privacy-rules) (2026)
- [معرفی محیط توسعهٔ بصری FlutterFlow](https://docs.flutterflow.io/) (2026)
- [دریافت کد پروژه در FlutterFlow](https://docs.flutterflow.io/flutterflow-cli/exporting/) (2026)
- [تعریف رسمی قالب وردپرس؛ تفاوت خروجی وب با قالب نصب‌شدنی](https://developer.wordpress.org/themes/getting-started/what-is-a-theme/) (2026)

