1// every bid, live, for everyone watching 2Stream<Auction> watch(String id) => _db 3 .doc('auctions/$id') 4 .snapshots() 5 .map(Auction.fromSnapshot); 6 7// a transaction: two bids at once can’t both win 8Future<void> bid(String id, Money amount) => 9 _db.runTransaction((tx) async {10 final a = Auction.fromSnapshot(await tx.get(_db.doc('auctions/$id')));11 if (amount <= a.highestBid) throw const BidTooLow();12 tx.update(a.ref, {'highestBid': amount.value, 'leader': uid});13 });
مزايدة لحظية · KNET
توضيح مبسّط — كود العميل خاص
Bidder appAuctionCubitFirestore
Live auctionsStores & servicesKNET
رسم توضيحي
$ saheel auction --live✓ bid accepted · leader updated✓ 10 service types online✓ store review approved
رسم توضيحي
المشكلة
سوق لمجتمع الخيل في الكويت: متاجر خيل، 10 أنواع خدمات، فعاليات، ومزادات حية يجب أن تصل فيها كل مزايدة لحظياً لكل المشاهدين — بالعربية والإنجليزية، ودفع عبر KNET، وموافقة المتجرين.
ما بنيته وكنت مسؤولاً عنه
مزادات حية بـمزايدة لحظية على خادم Firebase.
متاجر الخيل و10 أنواع خدمات والفعاليات في تطبيق واحد عربي RTL / إنجليزي.
المدفوعات عبر KNET.
مسؤولية دورة المراجعة كاملة في App Store و Google Play: الصلاحيات وأوضاع الخلفية والحساب التجريبي.
منتج لعميل. صفحة App Store مرفقة؛ الخادم وأدوات الإدارة غير معروضة.