Arxivga qaytish
IV. Mijoz loyihalari va logistika platformalariqo'shimchalidermijoz anonimlashtirilgan

Pitsa brendi mobil ilovasi (Flutter)

Restaurant chain (UZ) uchun mijozlarga qaratilgan mobil ovqat yetkazib berish ilovasi (iOS+Android), Flutter'da: katalog, savat, Yandex Maps'da zona/terminal tanlash bilan checkout, Payme to'lovlari, kuzatuv, ko'p tilli — jonli produkshn ilova, ~3.7 yil davomida ishlab chiqilgan.

Holat
qo'llab-quvvatlanadi
Davr
2021-08-30 → 2025-04-19
AI sessiyalar
Stek
Tillar
Dart
Freymvorklar · Infra
FlutterMobXflutter_blocflutter_hooksHiveget_itYandex MapKitFirebaseeasy_localization
§01

Umumiy ko'rinish

  • Bu nima: Restaurant chain (UZ) uchun B2C ovqat yetkazib berish ilovasi. Mijoz shahar/filial (terminal) tanlaydi, Yandex Maps orqali geo-zonaga bog'langan yetkazib berish turini (yetkazib berish/olib ketish) belgilaydi, savatni yig'adi, buyurtmani rasmiylashtiradi, to'lovni amalga oshiradi (Payme), holatni kuzatadi, bonus ballari to'playdi, yangiliklar/aksiyalarni o'qiydi. pubspec'dagi versiya — 1.0.70+70.
  • Turi / holati / roli: mobil (Flutter, iOS+Android) · maintained (oxirgi kommitlar — 2025-yil aprel) · lead — foydalanuvchi eng ko'p hissa qo'shgan ishtirokchi (268 dan ~108), 3 kishilik jamoa (shahaa/Shahzod ~95 va Bobur ~63 bilan birga).
  • Faol davr: 2021-08-30 → 2025-04-19 — bitta produktning deyarli 4 yillik uzluksiz rivojlanishi (Flutter SDK migratsiyalari, bog'liqliklarni yangilash, funksiyalar). Uzoq umr = real produktni saqlab turishning kuchli signali.
§02

Stek

  • Tillar: Dart (Flutter, SDK >=2.17.0).
  • Freymvorklar/kutubxonalar:
  • *State management (aralash):* MobX (flutter_mobx, mobx_codegen) + flutter_bloc (9.x) + flutter_hooks — bitta loyihada uchta reaktiv yondashuv (uzoq evolyutsiya merosi).
  • *Lokal saqlash:* Hive + hive_flutter + hive_generator — codegen orqali tiplashtirilgan adapterlar (@HiveType/@HiveField, models/basket.dart, terminals.dart ga qarang), shared_preferences.
  • *Navigatsiya/DI:* auto_route (codegen routing) + get_it (service locator).
  • *Xaritalar/geo:* yandex_mapkit + geolocator — manzil/yetkazib berish zonasini tanlash, kuzatuv.
  • *Auth:* lokal paketlar authentication_repository + user_repository (repository pattern, packages/ + lib/src/), otp_autofill, intl_phone_number_input, pin_code_fields — telefon+OTP orqali kirish.
  • *Firebase:* core + crashlytics + messaging (push).
  • *i18n:* easy_localization (+loader) — RU/UZ/EN (modellarda nameUz/nameEn maydonlari).
  • *Formalar/UI:* flutter_form_builder + form_builder_validators, flutter_platform_widgets (iOS/Android adaptiv), flutter_html/simple_html_css, ko'plab UI paketlari (carousel, staggered animatsiyalar, rating bar, modal sheet'lar).
  • *Yangilanishlar:* in_app_update + upgrader — majburiy/moslashuvchan yangilanishlar.
  • Infra/deploy: native build'lar Android (Gradle) + iOS (CocoaPods), flutter_native_splash, flutter_launcher_icons, Firebase (GoogleService-Info.plist, firebase_options.dart). Backend — tashqi (Restaurant chain (UZ) API), ilova esa klient tomonida.
  • Ma'lumotlar: Hive (savat/shahar/terminallar/foydalanuvchining offline keshi), http orqali REST.
  • Diqqatga sazovor tooling: patches/country_pickers — lokal bog'liqlik patch'i; dependency_overrides (eski Android SDK uchun flutter_plugin_android_lifecycle tuzatilgan) — versiya konfliktlari bilan real ish.
§03

Nima qilindi

Kommit xabarlari ko'pincha qisqa/befoyda ("changed version", "dd") — xulosalar koddan chiqarilgan.

  • Katalog va savat: mahsulotlar, bo'limlar, aloqador mahsulotlar, modifikatorlar; Hive'dagi savat (Basket typeId 2 — encodedId/lineCount/totalPrice) offline saqlanishi bilan.
  • Yetkazib berish/geo: Yandex Maps'da terminal va zona tanlash (widgets/delivery/*: delivery_modal, terminals_modal, pickup), geolokatsiya, har bir terminal uchun yetkazib berish/olib ketish vaqtini hisoblash.
  • To'lov: har bir terminal uchun alohida Payme integratsiyasi (Terminals da paymeActive, paymeMerchantId, paymeSecureKey, paymeTestMode, paymePrint maydonlari) — har bir filial uchun har xil merchant kalitlari.
  • Auth: kodni avtomatik to'ldirish bilan telefon+OTP, alohida paketlardagi repository pattern.
  • Update service: services/app_update_service.dart (~14.5 KB) — in_app_update ustidagi singleton: immediate/flexible yangilanish, qayta ko'rsatishdan himoya bilan restart dialogi (_isRestartDialogShowing), faqat debug uchun emulyatsiya (kDebugMode gate).
  • Ishonchlilik: main.dart da Crashlytics FlutterError.onError + PlatformDispatcher.instance.onError ga ulangan (asinxron xatolarni ushlash), fon rejimidagi push handler.
  • Hajm: ~3.7 yilda 268 kommit; lib/ da 123 ta .dart fayl, ~13 ta domen widget bo'limi.
§04

Texnik chellenjlar

Kod/fayllar bilan tasdiqlangan:

  • Hive'da codegen bilan offline-first (models/*.dart + *.g.dart): domen modellari (Basket, Terminals, City, DeliveryType, PayType, Stock, User…) tiplashtirilgan adapterlar orqali Hive'ga serializatsiya qilinadi (@HiveType(typeId: N)), maydon raqamlashi o'tkazib yuborishlar bilan qo'lda boshqariladi (masalan, Terminals'da 20-maydon o'tkazib yuborilgan) — ilova rivojlangani sari lokal-DB sxemasini ehtiyotkorlik bilan boshqarish. → lokal saqlash migratsiyalarini tushunish.
  • Ko'p filialli to'lov konfiguratsiyasi (models/terminals.dart): har bir terminal o'zining Payme ma'lumotlari va test/prod rejimini olib yuradi — ilova aslida savdo nuqtalari bo'ylab multi-tenant sifatida ishlaydi. → real riteyl domenini modellashtirish.
  • Yangilanishning chekka holatlarini produkshn darajasida boshqarish (services/app_update_service.dart): singleton, idempotent dialog (dublikatlarga qarshi flag), immediate-update mavjud bo'lmaganda toast bilan graceful degradation, test yo'lini kDebugMode ortida izolyatsiya qilish. → produkshn UX chekka holatlariga e'tibor.
  • Uchdan-uchgacha crash reporting (main.dart): ham sinxron Flutter xatolari, ham PlatformDispatcher.onError orqali asinxron xatolar Crashlytics'ga fatal sifatida boradi — to'liq qamrov. → operatsion yetuklik.
  • Adaptivlik va i18n: flutter_platform_widgets (iOS/Android'da native ko'rinish) + 3 til bo'ylab easy_localization, modellarda to'g'ridan-to'g'ri lokalizatsiyalangan maydonlar bilan. → real ko'p tilli bozor (O'zbekiston) uchun ishlash.
  • Bog'liqliklarni boshqarish: country_pickers ning lokal patch'i + eski Android SDK uchun dependency_overrides — katta paket daraxtidagi konfliktlarni hal qilish. → uzoq umr ko'radigan Flutter loyihasini saqlash tajribasi.
§05

AI yordamida ishlab chiqish

  • Topilgan sessiyalar: 0. To'liq yo'lni normallashtirish katalog bermadi; qo'shni yoki ichma-ich joylashgan sessiyalar ham yo'q.
  • AI bilan nima qilingan: ma'lumot yo'q — loyiha Claude Code'dan faol foydalanishdan oldin ishlab chiqilgan (2021–2025).
  • AI-vorkflow patternlari: yo'q.
§06

Yutuqlar va metrikalar

  • Uzoq umr: bitta produkshn ilovaning ~3.7 yili, 268 kommit, 1.0.70 versiya.
  • Kod bazasi ko'lami: 123 ta .dart fayl, ~13 ta domen widget bo'limi, ~40 ta model.
  • Real foydalanuvchilar: Restaurant chain (UZ) (O'zbekiston) uchun ochiq yetkazib berish ilovasi, real to'lovlar (Payme), push, crash analitikasi.
  • Cross-platform: adaptiv UI bilan iOS + Android uchun yagona kod bazasi.
§07

Hissa qo'shganlar

git shortlog · barcha branchlar

  1. Dave93108
  2. shahzodsalimsakov95
  3. Boburt63
  4. User2
4 hissadorjami 268 ta kommit
Hozirda

Senior / Staff muhandis rollari va tanlab olingan frilansga ochiqman — prodakshn AI, platforma va full-stack ishlar.

Bog'lanish