یک اپلیکیشن اندروید و وباپ واکنشگرا به زبان فارسی و راستبهچپ بساز با نام «آهنگیاب». هدف اپ این است که کاربر بتواند با دو روش آهنگ را سریع پیدا کند: ۱) ضبط یا انتخاب یک تکه وویس، ۲) وارد کردن بخشی از متن آهنگ. دادهٔ ورودی باید به API تشخیص آهنگِ متعلق به کاربر ارسال شود و پاسخ API به شکل نتیجهٔ قابل فهم نمایش داده شود. صفحهٔ اصلی شامل دو حالت «جستجو با وویس» و «جستجو با متن» باشد. در حالت وویس، دکمهٔ بزرگ شروع/توقف ضبط، نمایش مدت ضبط، امکان پخش پیشنمایش، حذف و جستجو وجود داشته باشد. همچنین امکان انتخاب فایل صوتی از دستگاه فراهم شود. در حالت متن، یک کادر متن چندخطی با دکمهٔ جستجو و پیامهای خطای واضح قرار بگیرد. هنگام ارسال، وضعیت در حال جستجو و امکان لغو نمایش داده شود. برای API یک لایهٔ اتصال قابل تنظیم بساز که URL endpoint، روش درخواست، نوع ورودی و mapping پاسخ را پشتیبانی کند. چون مشخصات endpoint و کلید API هنوز ارائه نشده، اپ یک صفحهٔ تنظیمات داشته باشد تا کاربر بتواند آدرس API، نوع احراز هویت، نام هدر، کلید API و قالب درخواست/پاسخ را وارد و اتصال را تست کند؛ کلیدها فقط بهصورت محلی روی دستگاه ذخیره شوند و در رابط عمومی نمایش داده نشوند. کد را طوری ساختاربندی کن که بعداً با جایگزین کردن تنظیمات یا adapter، به مستندات واقعی API متصل شود. برای خطاهای شبکه، پاسخ نامعتبر، نبودن نتیجه و محدودیت دسترسی پیامهای فارسی و قابل فهم نشان بده. هیچ حساب کاربری، سرور اختصاصی، پرداخت، چت یا قابلیت اشتراکگذاری لازم نیست. نتیجهٔ جستجو باید عنوان آهنگ، نام خواننده، آلبوم، تصویر در صورت وجود، میزان اطمینان و زمان جستجو را نشان دهد. اگر API چند نتیجه برگرداند، فهرست نتایج با مرتبسازی بر اساس میزان اطمینان نمایش داده شود. تاریخچهٔ جستجوها، نوع ورودی، متن یا نام فایل، نتیجه و زمان در حافظهٔ محلی دستگاه ذخیره شود و امکان پاک کردن هر مورد و پاککردن همهٔ تاریخچه وجود داشته باشد. در صورت وجود لینک پخش یا اطلاعات تکمیلی در پاسخ API، آنها را بهصورت دکمه نمایش بده؛ پخش موسیقی را فقط در صورت وجود URL قابل پخش پیادهسازی کن. ظاهر مدرن، تمیز و سریع با زمینهٔ تیرهٔ لوکس، رنگ تأکیدی بنفش/فیروزهای، کارتهای خوانا و انیمیشنهای ظریف باشد. طراحی کاملاً موبایلاول و واکنشگرا باشد: از عرض ۳۶۰ پیکسل تا عرض کامل دسکتاپ بدون بههمریختگی و بدون اسکرول افقی کار کند؛ از عرض ثابت پیکسلی و ارتفاع ثابت برای بخشهای متنی استفاده نشود و چیدمان کشسان با flex یا grid، درصد و واحدهای نسبی باشد؛ دکمهها و عناصر قابل لمس حداقل ۴۴×۴۴ پیکسل و با فاصلهٔ کافی باشند؛ هیچ قابلیتی فقط با hover در دسترس نباشد؛ safe-area inset برای ناچ و نوار پایین رعایت شود؛ meta viewport استاندارد وجود داشته باشد؛ در نمایشگر بزرگ محتوا در ستونهای منطقی و با حداکثر عرض خوانا قرار بگیرد، نه اینکه یک ستون بیش از حد کش بیاید. وضعیتهای خالی، بارگذاری، موفقیت و خطا را کامل طراحی کن. دادههای تاریخچه و تنظیمات بین بازدیدها و بسته و باز شدن دوبارهٔ اپ باقی بمانند. از دادهٔ ساختگی فقط برای پیشنمایش رابط استفاده کن و آن را بهعنوان نتیجهٔ واقعی نشان نده.










