مهندسین ستایش
خبر و رسانهاندرویدFlutterAPI اختصاصیروشن و تیره

کل صفحه‌ی خانه، در یک درخواست پنج کیلوبایتی

اپلیکیشن رسمی jahanefootball.com. به‌جای مصرف wp-json که هر مطلبش حدود ۲۰۰ کیلوبایت وزن دارد، یک API اختصاصی همان مطلب را در حدود ۱٫۷ کیلوبایت تحویل می‌دهد.

اندروید ۸ به بالا، خروجی arm64 حدود ۱۸٫۹ مگابایت، فارسی و راست‌به‌چپ.

نشان جهان فوتبال: خط فارسی سفید و توپ فوتبال روی زمینه‌ی قرمز
۵ کیلوبایت

یک درخواست برای کل خانه

اسلایدر ویژه، آخرین اخبار، ریل ویدیو و بلوک هر دسته؛ ۴۳ مطلب در پنج بخش، همه در یک پاسخ فشرده.

۱٫۷ کیلوبایت

وزن هر مطلب

در برابر حدود ۲۰۰ کیلوبایت همان مطلب روی wp-json. کاهش وزن، مستقیم به سرعت باز شدن ترجمه می‌شود.

۱۵ تست

هشت‌تا روی API واقعی

هفت تست دیگر ویجت‌های واقعی را با کلاینت شبیه‌سازی‌شده رندر می‌کند؛ خانه، جهت راست‌به‌چپ، هر دو تم و حالت خطا.

امکانات

یک خواننده‌ی خبر که هر حالتش طراحی شده

هر صفحه سه حالت بارگذاری، خالی و خطا دارد. فهرست‌ها صفحه‌بندی می‌شوند و هنگام بارگذاری بیشتر، تکراری‌ها حذف می‌شوند؛ مطلبی که وسط اسکرول منتشر شود دوبار دیده نمی‌شود.

خانه در یک درخواست

اسلایدر مطالب ویژه، آخرین اخبار، ریل ویدیو و بلوک اختصاصی هر دسته، همه از یک پاسخ ساخته می‌شوند؛ نه چند فراخوان پشت سر هم.

اسلایدر ویژهآخرین اخبارریل ویدیوبلوک دسته

مطلب، پاک‌سازی‌شده از سمت سرور

HTML مطلب پیش از رسیدن به گوشی sanitize می‌شود. زمان مطالعه، برچسب‌ها، مطالب مرتبط و اشتراک‌گذاری هم کنارش هست.

نشان‌شده‌ها روی خود دستگاه

مطلب را ذخیره می‌کنید و با یک کشیدن انگشت حذفش می‌کنید. فهرست نشان‌شده‌ها هیچ‌وقت از گوشی بیرون نمی‌رود.

جست‌وجوی فارسی‌فهم

با تأخیر هوشمند تایپ اجرا می‌شود تا هر حرف یک درخواست نسازد، و با ویژگی‌های خط فارسی کنار می‌آید.

تم و اندازه‌ی متن

سفید و قرمز به‌صورت پیش‌فرض، حالت تیره و چهار اندازه‌ی متن در تنظیمات. سطح روشن #FFFFFF و تیره #0E1013.

روشنتیرهچهار اندازه‌ی متن

راست‌به‌چپ از ریشه

جهت از Directionality در ریشه‌ی اپ می‌آید نه از بازنویسی تک‌تک ویجت‌ها. تایپوگرافی IRANSansX با ارتفاع خط بازتر، چون خط فارسی فضای عمودی بیشتری می‌خواهد.

نگاهی به برنامه

نمای واقعی صفحه‌های اصلی برنامه، همان‌طور که روی گوشی دیده می‌شود.

اسکرین‌شات اپ جهان فوتبال: صفحه‌ی خانه با اسلایدر خبر ویژه و فهرست آخرین اخبار به تفکیک لیگ.
خانه با خبر ویژه و آخرین اخبار
اسکرین‌شات اپ جهان فوتبال: صفحه‌ی یک خبر لیگ برتر انگلیس با تصویر، تیتر، تاریخ و زمان مطالعه.
صفحه‌ی خبر با برچسب لیگ و زمان مطالعه
اسکرین‌شات اپ جهان فوتبال: خبر سری آ ایتالیا با دکمه‌های جست‌وجو، اشتراک‌گذاری و نشان‌کردن.
خبر سری آ با ابزار اشتراک و ذخیره
اسکرین‌شات اپ جهان فوتبال: زبانه‌ی نتایج لیگ برتر انگلیس با نشان تیم‌ها، نتیجه و تاریخ هر بازی.
نتایج بازی‌های لیگ برتر انگلیس
اسکرین‌شات اپ جهان فوتبال: جدول رده‌بندی لالیگای اسپانیا با تعداد بازی، تفاضل گل و امتیاز تیم‌ها.
جدول کامل رده‌بندی لالیگا
اسکرین‌شات اپ جهان فوتبال: بخش جدول لیگ‌ها در صفحه‌ی خانه با زبانه‌ی لیگ قهرمانان اروپا.
جدول لیگ‌ها در صفحه‌ی خانه

هر درخواست امضا می‌شود

کلاینت روی متد، مسیر، کوئریِ مرتب‌شده، زمان و nonce یک امضای HMAC-SHA256 می‌سازد و همراه درخواست می‌فرستد. اختلاف ساعت دستگاه هم از هدر Date سرور تصحیح می‌شود، پس گوشی با ساعت غلط باز هم احراز می‌شود.

۴۳مطلب در اولین پاسخ خانه
۵ بخشدر همان یک درخواست
  • امضا روی METHOD، PATH، کوئری مرتب‌شده، timestamp و nonce
  • تصحیح خودکار انحراف ساعت از روی هدر Date سرور
  • کلید امضا هیچ‌وقت در مخزن commit نمی‌شود و در زمان build تزریق می‌شود
  • build بدون کلید، اپی می‌سازد که خطای روشن می‌دهد نه خطای مبهم سرور

اپ خبری‌تان اینقدر سبک است؟

همین معماری را روی سایت خبری شما هم می‌شود پیاده کرد؛ APIِ لاغر، اپ سبک، صفحه‌ی خانه در یک درخواست.