Skip to content

Latest commit

 

History

History
245 lines (201 loc) · 11 KB

File metadata and controls

245 lines (201 loc) · 11 KB

Ninja Trips — TODO List

راهنما: این فایل نقشه راه کامل اپلیکیشن Ninja Trips است.
هر بار که می‌خواهید اپ را بهبود دهید، از همین لیست استفاده کنید.
✅ = تکمیل شده | 🔲 = هنوز انجام نشده


✅ فاز ۱ — پایه و زیرساخت (Phase 1 — Foundation & Backend)

Models

  • مدل Trip با پشتیبانی کامل چندزبانه (titleEn/titleFa, descriptionEn/descriptionFa)
  • مدل User (نام، ایمیل، آواتار)
  • مدل Booking با toMap() / fromMap() برای ذخیره‌سازی
  • 🔲 مدل Review (امتیاز، متن، تاریخ، نام کاربر)
  • 🔲 مدل Notification (عنوان، متن، تاریخ، خوانده شده؟)

Provider / State Management

  • AppProvider — تم، زبان، علاقه‌مندی‌ها، رزروها، پروفایل، تنظیمات
  • ذخیره‌سازی با SharedPreferences (تم، زبان، علاقه‌مندی‌ها، رزروها، واحد پول، نوتیفیکیشن)
  • متدهای toggleFavorite(), addBooking(), cancelBooking()
  • متدهای updateProfile(), setCurrency(), setNotifications()
  • 🔲 ReviewProvider — مدیریت نظرات کاربران
  • 🔲 AuthProvider — سیستم ورود/ثبت نام واقعی (Firebase Auth یا local)
  • 🔲 اضافه کردن NotificationProvider برای اعلان‌های درون برنامه‌ای

Data

  • trip_data.dart — ۸ سفر با اطلاعات دوزبانه واکنشی
  • 🔲 اضافه کردن حداقل ۱۵ سفر جدید با تصاویر واقعی
  • 🔲 دسته‌بندی "تاریخی" (Historical) با سفرهای مرتبط
  • 🔲 اضافه کردن سفرهای ایرانی (اصفهان، شیراز، مشهد، کیش، …)
  • 🔲 جدا کردن داده‌ها به فایل‌های JSON یا یک backend واقعی

✅ فاز ۲ — صفحات اصلی (Phase 2 — Main Screens)

صفحه خانه (HomeScreen)

  • لیست سفرهای محبوب (افقی)
  • فیلتر بر اساس دسته‌بندی
  • Grid نمایش همه سفرها
  • کارت خوش‌آمد با نام کاربر
  • 🔲 دکمه "See All" در Popular Trips با صفحه مجزا
  • 🔲 بنر تبلیغاتی چرخشی (Carousel Banner) برای سفرهای ویژه
  • 🔲 بخش "Recently Viewed" برای سفرهای اخیراً مشاهده شده
  • 🔲 Pull-to-Refresh برای بارگذاری مجدد

صفحه جستجو (SearchScreen)

  • جستجوی زنده با فیلتر روی عنوان، مکان، دسته‌بندی، توضیحات
  • دکمه پاک کردن جستجو (X)
  • نمایش تعداد نتایج
  • حالت "هیچ نتیجه‌ای یافت نشد"
  • 🔲 فیلتر پیشرفته (محدوده قیمت، امتیاز، مدت سفر)
  • 🔲 ذخیره تاریخچه جستجوهای اخیر
  • 🔲 پیشنهادهای جستجو (Suggestions) هنگام تایپ

صفحه علاقه‌مندی‌ها (FavoritesScreen)

  • نمایش واقعی از provider (نه hardcode)
  • حذف از علاقه‌مندی با یک کلیک
  • حالت خالی با پیام راهنما
  • رفتن به جزئیات سفر
  • 🔲 مرتب‌سازی (بر اساس قیمت، امتیاز، نام)
  • 🔲 اشتراک‌گذاری سفر (Share)

صفحه جزئیات (DetailsScreen)

  • تصویر hero با SliverAppBar + گرادیان
  • دکمه علاقه‌مندی (قلب) در AppBar
  • نمایش دسته‌بندی، امتیاز، مدت سفر
  • نمایش ویژگی‌ها با آیکون تیک
  • دکمه "Book Now" که صفحه رزرو را باز می‌کند
  • بج "Popular"
  • 🔲 بخش نظرات/امتیازدهی کاربران
  • 🔲 عکس‌های گالری (چندین عکس)
  • 🔲 اشتراک‌گذاری سفر
  • 🔲 نقشه موقعیت مکانی (google_maps_flutter)
  • 🔲 سفرهای مشابه (Similar Trips)

صفحه رزرو (BookingScreen) — جدید

  • فرم کامل با نام، ایمیل، تاریخ سفر، تعداد مسافران
  • Date Picker برای انتخاب تاریخ
  • محاسبه قیمت کل به صورت لحظه‌ای
  • خلاصه سفر در بالای صفحه
  • Validation فرم
  • دیالوگ تأیید موفق
  • 🔲 انتخاب نوع اتاق / کابین
  • 🔲 انتخاب بیمه سفر
  • 🔲 درگاه پرداخت (payment gateway)
  • 🔲 ارسال تأیید رزرو به ایمیل

صفحه تاریخچه رزرو (BookingHistoryScreen) — جدید

  • لیست همه رزروها با جزئیات
  • نمایش وضعیت (تأیید شده، لغو شده، در انتظار)
  • امکان لغو رزرو با تأیید
  • 🔲 دانلود بلیط به صورت PDF
  • 🔲 اشتراک‌گذاری اطلاعات رزرو

✅ فاز ۳ — پروفایل و تنظیمات (Phase 3 — Profile & Settings)

صفحه پروفایل (ProfileScreen)

  • نمایش نام و ایمیل از provider
  • آمار واقعی (تعداد رزرو، علاقه‌مندی‌ها)
  • دکمه ویرایش پروفایل
  • منوی کامل با آیکون‌ها
  • دکمه خروج با تأیید
  • لینک به علاقه‌مندی‌ها، رزروها، تنظیمات، مرکز کمک
  • 🔲 آپلود عکس پروفایل
  • 🔲 نمایش تعداد کشورهای بازدید شده
  • 🔲 بج‌های دستاورد (Achievements)
  • 🔲 تاریخچه سفرهای گذشته

صفحه ویرایش پروفایل (EditProfileScreen) — جدید

  • ویرایش نام و ایمیل
  • ذخیره در provider و SharedPreferences
  • Validation فرم
  • 🔲 ویرایش شماره تلفن
  • 🔲 ویرایش تاریخ تولد
  • 🔲 آپلود و کراپ عکس پروفایل

صفحه تنظیمات (SettingsScreen)

  • تغییر تم (روشن/تاریک/سیستم) با ذخیره‌سازی
  • تغییر زبان (فارسی/انگلیسی) با ذخیره‌سازی
  • تنظیم نوتیفیکیشن با ذخیره‌سازی
  • انتخاب واحد پول (USD, EUR, GBP, IRR, AED)
  • لینک‌های قوانین، حریم خصوصی، مرکز کمک
  • 🔲 صفحه کامل "درباره ما"
  • 🔲 صفحه "قوانین و مقررات" با متن کامل
  • 🔲 صفحه "حریم خصوصی" با متن کامل
  • 🔲 تنظیم اندازه فونت (دسترسی‌پذیری)

🔲 فاز ۴ — ویژگی‌های پیشرفته (Phase 4 — Advanced Features)

احراز هویت (Authentication)

  • 🔲 صفحه ورود/ثبت‌نام (Sign In / Sign Up)
  • 🔲 ورود با گوگل
  • 🔲 ورود با شماره تلفن (OTP)
  • 🔲 فراموشی رمز عبور

نظرات و امتیاز (Reviews)

  • 🔲 مدل Review با نام کاربر، امتیاز، متن، تاریخ
  • 🔲 ReviewProvider برای مدیریت نظرات
  • 🔲 صفحه نوشتن نظر پس از سفر
  • 🔲 نمایش نظرات در صفحه جزئیات
  • 🔲 امتیاز کلی از میانگین نظرات

نوتیفیکیشن (Notifications)

  • 🔲 صفحه اعلان‌ها (NotificationsScreen)
  • 🔲 اعلان هنگام تأیید رزرو
  • 🔲 اعلان یادآوری قبل از سفر
  • 🔲 push notifications با firebase_messaging

نقشه (Map Integration)

  • 🔲 اضافه کردن پکیج google_maps_flutter
  • 🔲 نمایش موقعیت مقصد در صفحه جزئیات
  • 🔲 صفحه نقشه با همه مقاصد

Backend واقعی

  • 🔲 اتصال به Firebase Firestore
  • 🔲 مدیریت دیتا از cloud به جای local
  • 🔲 آپلود تصاویر به Firebase Storage
  • 🔲 API برای قیمت‌های لحظه‌ای
  • 🔲 سیستم پرداخت (Stripe / Zarinpal)

🔲 فاز ۵ — طراحی پیشرفته (Phase 5 — Advanced UI/UX)

انیمیشن‌ها

  • 🔲 انیمیشن hero برای عکس کارت→جزئیات
  • 🔲 انیمیشن fade-in هنگام لود صفحه
  • 🔲 انیمیشن دکمه علاقه‌مندی (قلب)
  • 🔲 Skeleton loading هنگام بارگذاری

Onboarding

  • 🔲 صفحات Onboarding (۳-۴ اسلاید) برای کاربران جدید
  • 🔲 Splash Screen با لوگو

بهبود UX

  • 🔲 کشیدن به پایین برای رفرش (Pull-to-Refresh)
  • 🔲 بارگذاری lazy برای لیست‌های بزرگ
  • 🔲 حالت آفلاین با cache محلی
  • 🔲 پشتیبانی از RTL کامل برای زبان فارسی

فونت

  • 🔲 اضافه کردن فونت فارسی (Vazirmatn) برای حالت RTL
  • 🔲 اضافه کردن فونت انگلیسی (Poppins)

🔲 فاز ۶ — تست و انتشار (Phase 6 — Testing & Release)

  • 🔲 Unit Tests برای Provider ها
  • 🔲 Widget Tests برای صفحات اصلی
  • 🔲 Integration Tests (end-to-end)
  • 🔲 تنظیم CI/CD با GitHub Actions
  • 🔲 انتشار در Google Play Store
  • 🔲 انتشار در Apple App Store
  • 🔲 Crashlytics برای ردیابی خطاها
  • 🔲 Analytics برای تحلیل رفتار کاربر

وابستگی‌های توصیه شده برای فازهای بعدی

dependencies:
  # UI
  cached_network_image: ^3.3.1     # بارگذاری تصاویر از اینترنت
  shimmer: ^3.0.0                   # skeleton loading
  smooth_page_indicator: ^1.1.0    # indicator برای onboarding
  lottie: ^3.1.0                    # انیمیشن‌های Lottie
  flutter_svg: ^2.0.10              # آیکون‌های SVG
  
  # State & Data
  go_router: ^13.2.0                # routing پیشرفته
  flutter_bloc: ^8.1.5              # جایگزین provider برای state پیچیده
  hive_flutter: ^1.1.0              # database محلی سریع‌تر
  
  # Auth & Backend
  firebase_core: ^3.3.0
  firebase_auth: ^5.1.4
  cloud_firestore: ^5.2.1
  firebase_storage: ^12.1.2
  firebase_messaging: ^15.0.3
  
  # Maps
  google_maps_flutter: ^2.6.1
  geolocator: ^12.0.0
  
  # Utils
  image_picker: ^1.1.2              # انتخاب عکس
  pdf: ^3.11.1                      # تولید PDF بلیط
  share_plus: ^10.0.0               # اشتراک‌گذاری
  url_launcher: ^6.3.0              # باز کردن لینک
  intl: ^0.19.0                     # فرمت تاریخ/ارز
  
  # Payment
  # stripe_payment یا zarinpal_payment

آخرین به‌روزرسانی: ۲۰ آوریل ۲۰۲۶