پرسشهای متداول
هرچه پیش از ساختن اولین بکاندتان لازم است بدانید — و هرچه بهتر است پیش از پرداخت بدانید. پاسخها کوتاهاند و جایی که چیزی را هنوز نداریم، همان را میگویند.
متن پرسش و پاسخ جستوجو میشود. نتیجهها همین پایین بهروز میشوند.
۶۳ پرسش در ۸ دسته
شروع کار
اگر تازه رسیدهاید و میخواهید بدانید فیکارو چه کاری برایتان میکند.
فیکارو یک BaaS هوش مصنوعی است: بکاند را یا با توصیف فارسی کسبوکارتان میسازید یا با طراحی مدل داده در پنل — و در هر دو حالت یک بکاند واقعی تحویل میگیرید. مشخصاً چهار چیز، همان لحظه: یک دیتابیس PostgreSQL اختصاصی برای هر پروژه؛ API کامل روی هر موجودیت با فیلتر و مرتبسازی و صفحهبندی؛ مستندات OpenAPI بههمراه کالکشن Postman و محیط آزمایش زنده؛ و کلید دسترسی با احراز هویت کاربر نهایی و کنترل دسترسی تا سطح «هر کاربر فقط رکوردهای خودش». منطق کسبوکار — اعتبارسنجی، فیلد محاسبهشده و تریگر شرطی — در موتور قوانین تعریف میشود، با اجرای آزمایشی پیش از اعمال. سرور، دیپلوی و migration دیگر کار شما نیست؛ و چون اجرا بر پایهٔ اسکیمای داینامیک است نه تولید کد، افزودن یا حذف یک فیلد فقط تغییر متادیتاست: بدون ALTER TABLE و بدون ریاستارت. آنچه تحویل نمیدهد هم روشن است: فرانتاند اپ یا سایت همچنان کار خودتان است.
بله — این مسیر اصلی شروع است. کسبوکارتان را به فارسی توصیف میکنید و دستیار اول فهرست جدولها را با سطح دسترسی هرکدام پیشنهاد میدهد: عمومی، همهٔ کاربران واردشده، یا فقط رکوردهای خود کاربر. شما اصلاح و تأیید میکنید و بعد مدل داده، روابط، دادهٔ نمونهٔ فارسی و اولین درخواست اجراشدنی ساخته میشود. خروجی از همان اعتبارسنجیای رد میشود که قالبهای رسمی فیکارو رد میشوند، پس چیزی که تحویل میگیرید مستقرشدنی است، نه پیشنویس. ساخت هم یکبار مصرف نیست: روی پروژهای که از قبل مدل داده دارد میگویید چه چیزی باید عوض شود و دستیار فهرست دقیق تغییرها را با درجهٔ ایمن / هشدار / مخرب نشان میدهد؛ تا تأیید نکنید چیزی اعمال نمیشود و خودِ اعمال رایگان است. مرز نسخهٔ فعلی: قوانین را خودتان در پنل اضافه میکنید، جایی که اجرای آزمایشی دارید. هزینهٔ هر ساخت همان لحظه از موجودی نقدی کیفپول کم میشود — نه از اعتبار هدیه — و پیش از شروع، مبلغش را میبینید.
خیر، و این عمدی است. هوش مصنوعی فقط در لایهٔ ساخت است: مدل داده را پیشنهاد میدهد و میسازد. درخواستهای اپ شما را همیشه موتور قطعی فیکارو اجرا میکند — همان موتوری که اسکیمای پروژه را میخواند — پس پاسخ API هیچوقت حدس یک مدل نیست، تأخیر و هزینهٔ مدل را ندارد و رفتار امروز و فردایش یکی است. «BaaS هوش مصنوعی» یعنی همین ترکیب: ساخت با AI، اجرا قطعی.
بله. مدل داده و قانونها را با کلیک میسازید و API آماده تحویل میگیرید — بدون نوشتن حتی یک خط کد سمت سرور. برای وصل کردن API به اپ یا سایت، در نهایت کسی باید کد کلاینت را بنویسد؛ آن کد را هم میتوانید به دولوپر بسپارید.
با یک قالب آماده، چند دقیقه. صادقانهاش این است که اولین تجربه معمولاً ۱۵ تا ۲۰ دقیقه طول میکشد تا با محیط آشنا شوید؛ دفعههای بعد واقعاً چنددقیقهای است.
اگر کارتان به فروشگاه، وبلاگ یا رزرو نزدیک است، از قالب شروع کنید: مدل داده و قانونها از قبل چیده شدهاند و بعد هرچه خواستید عوض میکنید. بوم خالی وقتی بهتر است که ساختار دادهٔ خودتان را دقیق میدانید.
خیر. اندپوینتها روی زیرساخت فیکارو اجرا میشوند و همان لحظهٔ اعمال تغییرات فعالاند. هیچ build، ریاستارت یا توقف سرویسی در کار نیست.
بله. فایل CSV یا Excel را آپلود میکنید، ستونها را به فیلدها نگاشت میکنید و رکوردها یکجا ساخته میشوند. هر فایل تا ۱۰٬۰۰۰ ردیف و ۵ مگابایت؛ تاریخ شمسی و ارقام فارسی هنگام ورود نرمال میشوند.
بله. API روی HTTP است و با هر زبان و فریمورکی کار میکند. برای Flutter، Kotlin و Swift کتابخانهٔ کلاینت تایپشده از روی مدل دادهٔ پروژه تولید میشود، و برای ریاکتنیتیو و وب و Node پکیج @fikaro/client روی npm منتشر شده.
بله. npm install @fikaro/client — کلاینت رسمی، متنباز با لایسنس MIT و بدون هیچ وابستگی. در مرورگر، Node، ریاکتنیتیو، Deno و Bun کار میکند و تمدید توکن و صفحهبندی را خودش انجام میدهد. تفاوتش با SDKهای Flutter و Kotlin و Swift این است که آنها از روی اسکیمای پروژه تولید میشوند و مدلها را تایپ میکنند، ولی این یکی نصب میشود و با تغییر مدل داده نیازی به دانلود دوباره ندارد.
مستندات API پروژه + کالکشن Postman یا Bruno + یک کلید Playground. دولوپر با همین سه چیز، بدون هیچ توضیح اضافهای میتواند شروع کند.
مدل داده
جدولها، فیلدها، روابط و اینکه تغییر دادنشان بعد از انتشار چه هزینهای دارد.
موجودیت همان جدول دادهٔ شماست — مثل product یا order — و فیلد ستونهای آن. هر کدام دو نام دارند: نام نمایشی فارسی برای پنل، و شناسهٔ انگلیسی که در آدرس API مینشیند.
متن، عدد، بولین، تاریخ، ایمیل، موبایل، نشانی وب، فهرست (enum) و JSON. روی هر فیلد هم میتوانید قید بگذارید: الزامی، یکتا، حداقل و حداکثر، و الگوی regex.
چون همان شناسه در آدرس اندپوینت و در کد کلاینت ظاهر میشود. ترنسلیت خودکار عمداً وجود ندارد: اسمی که ماشین حدس بزند، بعداً همان چیزی است که دولوپر باید با آن سر کند. پنل همزمان نام فارسی و شناسهٔ انگلیسی را نشان میدهد.
سه نوع رابطه دارید: belongsTo (تعلق به والد)، hasMany (یکبهچند) و manyToMany (چندبهچند). بعد از تعریف، رکوردهای مرتبط را یا با ?include= داخل همان پاسخ میگیرید یا از مسیر تودرتوی /v1/order/{id}/order_item.
تغییرات تا وقتی «ذخیره و اعمال» نزنید روی API اثری ندارند. موقع اعمال، فیکارو هر تغییر را برچسب میزند: ایمن (مثل افزودن فیلد اختیاری)، هشدار (مثل فیلد الزامی یا قید یکتا) و مخرب (مثل حذف فیلد یا تغییر نوع) که تأیید صریح میخواهد. هر اعمال هم در «تغییرات» پروژه ثبت میشود.
خیر. فیکارو از روی مدل شما کد تولید نمیکند؛ یک موتور اجرایی، تعریف پروژه را میخواند و هر درخواست را همان لحظه بر اساس آن اجرا میکند. افزودن یا حذف فیلد یعنی تغییر تعریف — بدون build، بدون ریاستارت.
فیلدی که ذخیره نمیشود و هنگام خواندن رکورد از روی بقیهٔ فیلدها حساب میشود — مثل total_with_tax = total * 1.09. برای هر مقدار مشتقشده از این استفاده کنید تا داده هیچوقت با خودش ناهماهنگ نشود.
API و کلیدها
آدرس، احراز هویت، فیلتر و صفحهبندی، و اینکه خطاها چه شکلی برمیگردند.
هر پروژه یک نشانی (slug) دارد که در مسیر مینشیند: https://api.fikaro.ir/{slug}/v1/{entity}. سابدامین جدا لازم نیست.
یک درخواست HTTP ساده با هدر Authorization: Bearer apck_.... هر موجودیت مجموعهٔ کامل CRUD میگیرد: GET، POST، GET /{id}، PATCH /{id} و DELETE /{id} — بهعلاوهٔ مسیرهای رکوردهای مرتبط.
کلید Playground برای آزمایش و توسعه است، سقف نرخ محدودی دارد و همان کلیدی است که پنل «آزمایش زنده» مستندات با آن کار میکند. کلید Production برای محیط واقعی است، هششده نگهداری میشود و مقدارش فقط همان لحظهٔ ساخت نمایش داده میشود.
خیر. کلید هششده ذخیره میشود و بازیابیشدنی نیست — همین چیزی است که اگر دیتابیس ما لو برود، کلید شما را امن نگه میدارد. یک کلید تازه بسازید و کلید قبلی را باطل کنید.
هرگز. کلید Production دسترسی کامل به دادهٔ پروژه دارد و هر چیزی که به مرورگر برسد قابل خواندن است. برای دسترسی کاربران نهایی از ورود کاربران (JWT) استفاده کنید، نه از کلید.
فیلتر با ?filter[status]=active و عملگرهایی مثل gte، lt، like و in؛ چند فیلتر با هم AND میشوند. مرتبسازی با ?sort=price و برای نزولی ?sort=-price. صفحهبندی مبتنی بر cursor است: nextCursor را برای صفحهٔ بعد پس میفرستید و وقتی null شد، به انتها رسیدهاید.
قالب استاندارد Problem Details (RFC 7807) با فیلدهای type، title، status، detail و code. در منطق برنامه همیشه به code تکیه کنید نه به متن detail — کد پایدار است، متن ممکن است بهتر شود.
هر پلن سقف نرخ درخواست خودش را دارد و کلید Playground سقف سختگیرانهتری. با عبور از سقف، درخواستها موقتاً با کد ۴۲۹ رد میشوند — عمداً بهجای اینکه صورتحساب غافلگیرتان کند. دادهای از بین نمیرود و با ارتقای پلن سقف بلافاصله باز میشود.
بدنهٔ درخواست به API پروژه تا ۱۰ مگابایت پذیرفته میشود. برای فایل و تصویر از آپلود فایل استفاده کنید، نه از فرستادن base64 داخل رکورد.
اعداد در بدنهٔ API همیشه لاتیناند و ارقام فارسیِ ورودی خودکار نرمال میشوند. شماره موبایل در قالب E.164 (مثل +98912...) ذخیره میشود و تاریخها ISO 8601 و UTC هستند؛ تبدیل به تقویم شمسی سمت نمایش انجام میشود.
کاربران اپ شما
ثبتنام و ورود کاربران نهایی، و اینکه هر کدام چه چیزی را ببینند.
خیر. هر پروژه موجودیت user و اندپوینتهای آماده دارد: POST /v1/auth/signup و POST /v1/auth/login که توکن برمیگرداند. توکن را در همان هدر Authorization میفرستید تا درخواست از طرف آن کاربر انجام شود.
برای هر موجودیت یک «فیلد مالکیت» تعیین میکنید و دسترسی را روی scope=own میگذارید. آنوقت مقدار این فیلد با شناسهٔ کاربرِ واردشده مقایسه میشود — مناسب چیزی مثل «سفارشهای من». این محدودسازی فقط با توکن کاربران معنا دارد؛ کلید Production همیشه دسترسی کامل دارد.
نقش و ایمیل فیلدهای سیستمیاند و از مسیر API دادهٔ پروژه تغییر نمیکنند. این کار را در پنل و از صفحهٔ «رکوردها» روی موجودیت user انجام دهید.
برای ورود و ثبتنام کاربران اپ شما، کد یکبارمصرف با پیامک فرستاده میشود — روی زیرساخت پیامکی ایرانی. سهمیهٔ ماهانه ندارد و داخل هیچ پلنی نیست: هزینهٔ هر ارسال همان لحظه از اعتبار نقدی کیفپول کم میشود و اگر پیامکی نفرستید، چیزی هم نمیپردازید. اعتبار هدیهٔ ثبتنام خرج پیامک نمیشود؛ آن را برای پلن و زیرساخت خودِ فیکارو در نظر گرفتهایم. قیمت روز هر پیامک در صفحهٔ تعرفهها نوشته شده. ارسال پیامک دلخواه به مشتریهایتان فعلاً نیست.
قوانین و منطق تجاری
جایی که «بدون کد» از CRUD فراتر میرود: اعتبارسنجی، محرک، فرمول و فانکشن.
سه کار: اعتبارسنجی (درخواست را با پیام خطای خودتان رد میکند)، محرک (هنگام ایجاد یا ویرایش، فیلدی را مقداردهی میکند) و فیلد محاسباتی. یعنی منطق تجاری واقعی، بدون نوشتن سرور.
زبان امن نوشتن شرط و فرمول (Common Expression Language). عمداً یک زبان کامل نیست: نمیتواند حلقه بزند یا بیرون را صدا کند، در محیط ایزوله و با محدودیت منابع اجرا میشود، پس یک فرمول اشتباه نمیتواند سرویس شما را بخواباند.
اعداد در CEL اعشاریاند. در مقایسهها مقدار اعشاری بنویسید: total <= 0.0 درست است و total <= 0 خطا میدهد. این رایجترین اشتباه در نوشتن اولین قانون است.
قانون تازهساختهشده پیشنویس و غیرفعال است. از منوی همان قانون آن را «فعال» کنید. این پیشفرض عمدی است: قانونی که لحظهٔ ساخت فعال شود، میتواند بیخبر جلوی درخواستهای واقعی را بگیرد.
بله. با «پیشنمایش» قانون را روی دادهٔ نمونه اجرا میکنید و نتیجه را میبینید، بدون اینکه چیزی روی API یا دادههای واقعی اثر بگذارد.
برای منطقی که در یک عبارت جا نمیشود، فانکشن جاوااسکریپت دارید: کد خودتان را مینویسید و روی همان تغییر رکورد اجرا میشود. این هم داخل محیط ایزوله و با محدودیت منابع اجرا میشود.
بله. با وبهوک میتوانید رخدادهای پروژه را به آدرس خودتان بفرستید؛ فرستادن بعد از اعتبارسنجی و محرکها انجام میشود، پس رکوردی که قانون ردش کرده هیچوقت رخداد تولید نمیکند.
داده، امنیت و خروجی
کجا ذخیره میشود، چطور جدا نگه داشته میشود، و چطور بیرونش میبرید.
روی زیرساخت داخل ایران، در PostgreSQL. پرداخت، پیامک و میزبانی همه ایرانیاند — این یک تصمیم معماری است، نه لوکالیزیشن: تغییر تحریمها نباید سرویس شما را از کار بیندازد.
جداسازی در سطح خود دیتابیس با Row Level Security اعمال میشود و رفتارش fail-closed است: اگر لایهٔ تشخیص مستأجر به هر دلیلی مقدار نداشته باشد، درخواست هیچ ردیفی برنمیگرداند — نه اینکه همه را برگرداند.
بله. روزانه یک نسخهٔ رمزنگاریشده گرفته و روی فضای ابری جدا نگهداری میشود، و رویهٔ بازیابیاش نوشته و مستند شده است. اجرای آزمایشی بازیابی روی محیط استیجینگ انجام میشود، نه روی دادههای شما.
بله، هر وقت بخواهید: یک فایل ZIP شامل مدل داده، رکوردها و قانونها. خروجیهای کوچک همانجا دانلود میشوند و بزرگترها بهصورت کار پسزمینه آماده میشوند. هیچ قفلشدنی در کار نیست.
خیر، و این یک تصمیم است نه کمبود. فیکارو کد تولید نمیکند که بشود خروجی گرفت؛ یک موتور اجرایی، تعریف پروژهٔ شما را میخواند. آنچه همیشه مال شماست و همیشه قابل خروجی است، دادهٔ شماست.
بله. فایلها را در پروژه آپلود میکنید، هر فایل میتواند عمومی یا خصوصی باشد و مصرف فضای ذخیرهسازیتان را در همان صفحه میبینید.
جستوجوی متنی روی فیلدها با عملگر like انجام میشود و به بزرگی و کوچکی حروف حساس نیست. ارقام فارسیِ ورودی هم پیش از ذخیره نرمال میشوند، پس «۱۲۳» و «123» یک چیز حساب میشوند.
پرداخت و پلنها
کیفپول، سوزش ساعتی، و اینکه پلنها دقیقاً چه چیزی را عوض میکنند.
با کیفپول و سوزش ساعتی. اشتراک ماهانه و پیشپرداخت ندارید: کیفپول را هر مبلغی خواستید شارژ میکنید و هزینهٔ پلن هر پروژه ساعتبهساعت از همان کسر میشود. یعنی فقط ساعتهایی را میدهید که بکاندتان روشن بوده.
خیر. با ثبتنام، اعتبار هدیه در کیفپول شما قرار میگیرد و میتوانید بدون وارد کردن هیچ اطلاعات پرداختی شروع کنید.
پروژه متوقف میشود و درخواستها دیگر پاسخ نمیگیرند، ولی هیچ دادهای پاک نمیشود. بهمحض شارژ کیفپول، پروژه خودکار برمیگردد.
با کارت بانکی از طریق زرینپال، به تومان. مبلغ شارژ از ۱۰ هزار تومان شروع میشود، پس لازم نیست هزینهٔ یک ماه کامل را یکجا بدهید.
نرخ پلنها بدون مالیات نوشته شده. مالیات بر ارزش افزوده هنگام شارژ کیفپول محاسبه و در همان صفحه پیش از پرداخت نشان داده میشود.
هر پروژه پلن خودش را دارد و جداگانه حساب میشود، ولی همه از یک کیفپول مشترک کسر میشوند.
فقط ظرفیت. همهی پلنها — اسپرسو، کاپوچینو، ماکیاتو، موکا و آفوگاتو — کل محصول را دارند؛ چیزی که بالا میرود سقف تعداد جدول و فیلد، فضای ذخیرهسازی، نرخ درخواست و اتصالهاست.
بله. ارتقا بلافاصله اعمال میشود و از همان ساعت با نرخ جدید حساب میشوید. تنزل برای دورهٔ بعد زمانبندی میشود، بهشرطی که مصرف فعلی در سقف پلن پایینتر جا شود.
در فاز اول خیر. مدل فعلی فقط سوزش ساعتی از کیفپول است؛ گزینههای دورهای برای فازهای بعدی برنامهریزی شدهاند.
وضعیت سرویس و پشتیبانی
ما الان کجای مسیریم، و وقتی چیزی خراب شد چه کنید.
عرضه شده و ثبتنام برای همه باز است — بدون لیست انتظار و بدون کد دعوت. سرویس روی زیرساخت واقعی اجرا میشود و میتوانید پروژهٔ جدی با آن بسازید. سرویس جوان است و ما آمار کاربر منتشر نمیکنیم و عددی هم از خودمان نمیسازیم؛ آنچه ادعا میکنیم همان چیزی است که در وضعیت سرویس قابل دیدن است.
وضعیت در دسترس بودن سرویس عمومی منتشر میشود، ولی در فاز اول تضمین قراردادی SLA ارائه نمیشود. زیرساخت فعلی تکنمونه است و ادعای بیشتر از این صادقانه نیست.
از صفحهٔ وضعیت سرویس. اگر آنجا همهچیز سبز بود و باز هم درخواستهایتان جواب نمیگیرند، تیکت بزنید و کد خطای پاسخ را هم بفرستید.
پاسختان اینجا نبود؟
مستندات همین چیزها را با جزئیات فنی بیشتری میگوید. اگر آنجا هم نبود، بپرسید: صاحبان حساب از پنل تیکت میزنند و بقیه ایمیل میفرستند. هر دو پاسخ میگیرند.