🎯 هدف تست
هدف از این تست، ارزیابی توانایی عملی توسعهدهنده Flutter در طراحی، پیادهسازی و تحویل یک حداقل محصول قابل ارائه (MVP) با تمرکز بر:
- منطق صحیح
- معماری مناسب
- مدیریت وضعیت
- ارتباط واقعی با API
- کیفیت کد و ساختار پروژه
اولویت با اپلیکیشنی است که درست کار میکند، حتی اگر برخی جزئیات ظاهری یا امکانات فرعی کامل نباشند.
🧩 توضیح کلی پروژه
پیادهسازی یک مینی اپلیکیشن خرید گیفت کارت شامل:
- مشاهده لیست گیفت کارتها
- مشاهده جزئیات
- انتخاب کشور و مبلغ
- محاسبه قیمت نهایی
- ثبت سفارش
طراحی UI باید نزدیک به اسکرینشاتهای ارائهشده باشد. دقت پیکسلی کامل الزام نیست، اما رعایت Flow و ساختار UI امتیاز دارد.
🛠️ تکنولوژیها و الزامات فنی
الزامی
- Flutter
- معماری قابل دفاع
- State Management ترجیحاً GetX
- ارتباط با API واقعی (Mock قابل قبول نیست)
- کد تمیز، خوانا و قابل نگهداری
- Error Handling و Loading State واقعی
امتیاز اضافه
- استفاده از GoRouter
- تستنویسی (Unit / Widget)
- انیمیشنهای ساده و هدفمند
- خروجی Web Deploy شده
- فایل APK نهایی
🔐 مرحله اول: لاگین (Authentication)
توضیح
اپلیکیشن بهصورت کلی لاگینمحور نیست، اما برای ثبت سفارش، لاگین الزامی است.
ورود کاربران:
- وارد کردن شماره موبایل
- دریافت کد یکبارمصرف (OTP)
- وارد کردن کد و ورود به حساب
الزامات:
🏠 مرحله دوم: لیست گیفت کارتها
توضیح
نمایش لیست گیفت کارتهای موجود.
الزامات صفحه:
- نمایش لیست از بکاند
- کلیک روی هر آیتم → انتقال به صفحه جزئیات
- پشتیبانی از:
- Pagination
- Pull to Refresh
- Loading State
- Error State
اسکرینشات مورد نیاز:
لیست گیفت کارتها
🧾 مرحله سوم: جزئیات گیفت کارت و انتخابگر
صفحه اول (جزئیات):
- تصویر گیفت کارت
- نام
- توضیحات
- نمایش کشورهای پیشفرض
صفحه دوم (انتخاب کشور و مبلغ):
- لیست کامل کشورها
- انتخاب کشور
- نمایش مبالغ متناظر با کشور انتخابشده
- انتخاب اعتبار گیفت کارت
برای درک بهتر UI و Flow، اسکرینشاتها بهعنوان مرجع در اختیار شما قرار میگیرد.
صفحه ورود
صفحه تایید کد
جزئیات گیفت کارت
انتخاب کشور و مبلغ
💰 مرحله نهایی: محاسبه قیمت و ثبت سفارش
الزامات:
-
با هر تغییر در:
قیمت نهایی باید بهصورت دقیق محاسبه شود.
-
ارسال سفارش:
- ارسال درخواست به اندپوینت:
/saveOrder
- دریافت پاسخ موفق:
status_code: 200
با دریافت این پاسخ، تست به پایان میرسد.
📦 خروجیهای مورد انتظار
الزامی
- سورس کد پروژه
- README شامل:
- نحوه اجرا
- توضیح معماری
- تصمیمات مهم فنی
امتیاز اضافه
- فایل APK / AAB
- خروجی وب اپلیکیشن دیپلوی شده و قابل مشاهده
- تستنویسی
- داکیومنتسازی درست
- انیمیشنهای UX-Friendly
💡 راهنمایی فنی: پیادهسازی کپچا
برای پیادهسازی کپچا، از پکیج رسمی ar_captcha استفاده کنید.
این کتابخانه با سرویس arcaptcha یکپارچه شده و نیازی به مدیریت دستی iframe یا اسکریپتهای خارجی نیست.
⚠️ دامنه مورد نیاز https://iranicard.com
⚠️ کد یکتای کپتجا heequk6j14
💡 راهنمایی فنی: محاسبه کارمزد و قیمت نهایی
قیمت نهایی بر اساس ساختار دادهای API محاسبه میشود — نه فرمول ثابت. مسیر دسترسی به کارمزدها در پاسخ API به این صورت است:
countries
> [selectedCountry]
> subProducts
> [selectedSubProduct]
> priceForm > Fees