Restoranlar boʻyicha qoʻllanma
JoyTop
joy-top.uz ishlamoqda: xarita, qidiruv, muharrir toʻplamlari va joy egalari uchun yoʻli bor Toshkent ovqatlanish qoʻllanmasi. Sayt, mobil ilova va Telegram bot bitta maʼlumotlar bazasida ishlaydi.

«Find · Taste · Connect» — Toshkent qayerda ovqatlanishni shu qoʻllanma orqali tanlaydi.
Toshkentda ovqatlanish boʻyicha qoʻllanma: uni reklama emas, mahalliy mualliflar tuzadi. Tanlangan joylar, tekshirilgan menyu va haqiqiy narxlar, muharrir toʻplamlari va xarita. JoyTop — oʻz mahsulotimiz: Nodirxon uning hammuassisi va texnik direktori.
Mahsulot strategiyasi · UI/UX dizayn · Full-stack ishlab chiqish · Muharrirlik tizimi
Restoran roʻyxatlarida pul toʻlagan yuqorida turadi, menyular esa allaqachon eskirgan.
Toshkentda odamlar qayerda ovqatlanishni roʻyxatlardan tanlaydi, u yerda esa pul toʻlagan yuqoriroq chiqadi. Bunday roʻyxatlardagi menyu va narxlar eskiradi.
JoyTop joylarni mahalliy mualliflar tanlaydigan, har bir kartochkada haqiqiy menyu va haqiqiy narxlar turadigan qoʻllanma sifatida oʻylangan — bir vaqtning oʻzida saytda, mobil ilovada va Telegram botda.
Qoʻllanma qoidalarini odamlar xotirasiga emas, bazaga va xaritaga yozdik.
Xaritadagi belgining koʻrinishini koddagi qoida hal qiladi: ekspert tanlovi eng koʻzga tashlanadigan belgini oladi, menyusi va surati yoʻq joy esa oddiy nuqta. Joy tarifiga nima kirishini maʼlumotlar bazasi hal qiladi. Sayt, ilova va bot aynan bir xil yozuvlarni oʻqiydi.
Veb va mobil ilova uchun bitta umumiy joy modelidan foydalanish.
Yaqin joylarni topish va xaritani bitta geografik maʼlumotlar bazasiga qurish.
Reytingni tahririy saqlash va menyu, toʻplam hamda tekshiruv uchun boshqaruv vositalarini berish.
Xaritadagi belgi koʻrinishini qoida bilan belgilash: ekspert tanlovi eng koʻzga tashlanadigan belgini oladi, toʻliq maʼlumoti yoʻq joy esa oddiy nuqta boʻladi.
Bu JoyTop dizayni — uning oʻz kodidan qaytadan yigʻilgan.
Pastdagi oyna rasm emas. Fraunces va DM Sans shriftlari, tokenlardagi koʻk va toʻq sariq ranglar, piyola shaklidagi xarita belgisi va baho muhri JoyTop manba kodidan jonli qayta yigʻilgan. Xarita chizilgan va haqiqiy shaharni koʻrsatmaydi, undagi joylar esa namunalar. Yonida solishtirish uchun ommaviy joy-top.uz saytining skrinshotlari.
Образец А
Национальная
Образец Б
Плов
Образец В
Шашлык
Bu skrinshot emas — JoyTop manba kodi boʻyicha jonli HTML va CSS. Belgini tanlang: u joy-top.uz dagidek kattalashadi, pastda esa joy qatori paydo boʻladi.
- Shriftlar
- Fraunces · 300–700
- DM Sans · 300–700
- JetBrains Mono · 500
- Ranglar
- --jt-blue-700 #0f1a6c
- --jt-blue-900 #060a38
- --jt-orange-500 #f6a34e
- --jt-orange-700 #c77e2e
- --jt-cream-100 #fbf8f4
- --jt-cream-300 #f3efeb
- --jt-ink-900 #15140f
- --jt-ink-500 #514e42
- --border-default rgba(15, 26, 108, 0.16)
- primary #2D4AA8
- Burchaklar
- 4px · .seal
- 12px · .searchBtn
- 16px · .searchBar
- Harakat
- scale(1.34)setPinActive()
- 0.18s cubic-bezier(.2,.8,.2,1)pin image
- Manba
- web/src/styles/tokens.css
- web/tailwind.config.ts
- web/app/fonts.ts
- web/app/[locale]/map/map.module.css
- web/app/[locale]/map/components/MapNav.tsx
- web/app/[locale]/map/markerDom.ts
- web/app/[locale]/map/pinAsset.ts
- web/public/brand/logomark.svg
- web/components/collections/Seal.tsx
- web/components/collections/Seal.module.css


Tuzatishdan oldin oʻlchadik, qoidalarni esa chetlab oʻtib boʻlmaydigan joyga qoʻydik.
Bitta fazoviy maʼlumotlar tizimi ommaviy veb mahsulot, mobil ilova, Telegram bot va katalog ortidagi operatsion vositalarni ishlatadi.
- Interfeyslar
- Next.js veb, Expo mobil ilova va Telegraf bot
- Maʼlumot
- PostgreSQL, Supabase, PostGIS, fayl ombori va satr darajasidagi kirish siyosatlari
- Topish
- MapLibre hamda Postgres ichida birlashtirilgan matnli, trigram va prefiks qidiruvi
Qidiruv oddiy matn maydoni emas
Vaznli matn qidiruvi, noaniq trigram mosligi va prefiks natijalari reciprocal-rank fusion orqali birlashadi. Shu sabab aniq nom, soʻz shakli va xato yozuv bitta yoʻlda ishlaydi.
Joylashuv maʼlumot modelining bir qismi
PostGIS yaqin joylarni topish va koʻp darajali xaritani veb, mobil hamda operatsiyalar ishlatadigan oʻsha restoran yozuvlaridan quradi.
Har bir rol boshqariladigan yuzaga ega
Oʻquvchi, restoran egasi, ekspert va administrator bitta backenddan foydalanadi, satr siyosatlari hamda server funksiyalari esa tenant va tahrir chegaralarini himoya qiladi.
Tashqi qidiruv nazoratli zaxira boʻlib qoladi
Ichki katalogda natija kam boʻlsa, keshlangan Yandex natijalari faqat restoran toifalari filtridan oʻtgach qoʻshiladi va JoyTop manbasini almashtirmaydi.
Sekin xaritani oʻlchov bilan tahlil qildik
Zaxira maʼlumot boʻlmaganda xarita uzoq ochilardi. 14.08.2026 da buni ishlayotgan saytda oʻlchadik: javobning deyarli yarmini har bir joyda takrorlangan bir xil maydon nomlari egallagan edi. Yangi formatda nomlar bir marta keladi va xuddi shu maʼlumotda javob ikki baravar kichik. Odamlarda allaqachon oʻrnatilgan ilovalar eski formatni olishda davom etadi.
Sabab taxmin bilan emas, oʻlchov bilan topildi — ilovasi allaqachon oʻrnatilganlar uchun esa hech narsa buzilmadi.
Ikki SMS oʻrniga bitta — sinov yuborishida
Kirill yozuvidagi kirish kodi ikki pullik SMS qismiga boʻlinib ketardi. Matnni lotin yozuvida yozdik va har bir belgini tekshirdik: hatto oʻzbekcha ʻ belgisi ham ikkinchi qismni qaytarardi. 04.08.2026 da test raqamiga yuborilgan xabar bitta qismda keldi — 220–320 soʻm oʻrniga 110 soʻm.
Bunday kirish matni 2–3 baravar arzon — bu hisob-kitob emas, haqiqiy yuborish natijasi.
Bitta shikoyat — bir nechta sabab
Foydalanuvchi uchun kirishdagi har qanday nosozlik bir xil koʻrinadi: kod kelmadi. Shu alomat ortidagi har bir sababni va har biri uchun haqiqiy xatoni yozib qoʻydik. Kirish xizmati xato matnini yashiradi, shuning uchun yoʻriqnomada uni qanday oʻqish yozilgan.
Kirishdagi nosozlik bitta odamning xotirasidan emas, yozuvdan topiladi.
Taxminsiz katalog
Katalog ochiq manbalar asosida joyma-joy toʻldirilgan va har bir qabul qilingan fakt uchun manba va ishonch darajasi yozilgan. Avtomatika faqat boʻsh maydonlarni toʻldiradi — yozilganini faqat inson almashtira oladi. Joy yopilgan, nomini oʻzgartirgan, sayti endi boshqaga tegishli yoki boshqa joyni takrorlasa, tizim taxmin qilmaydi: uni nomlangan sabab bilan qoʻlda tekshirishga qoldiradi.
Joy kartochkasida begona telefondan koʻra boʻsh maydon yaxshiroq.
Tarifni baza ushlab turadi
Joy tarifiga nima kirishini ilova ekrani emas, maʼlumotlar bazasi tekshiradi. Obuna tugaganda joy asosiy tarifga qaytadi va unda menyuning 81-pozitsiyasini baza qabul qilmaydi. Tarifni aniqlab boʻlmasa, asosiysi amal qiladi, bir vaqtdagi ikkita qoʻshish esa limitdan birgalikda oʻtib keta olmaydi.
Tarif saytda, ilovada va bazaning oʻzida bir xil maʼnoni anglatadi.
Repozitoriyning asosiy tarmogʻida 429 ta maʼlumotlar bazasi migratsiyasi · saytning 58 ta sahifasi. 26.09.2026 da oʻzimiz sanadik.
Kartochka begona telefonni koʻrsatmaydi, tarifni esa ilova orqali chetlab boʻlmaydi.
Egasi uchun bu quyidagini anglatadi. Tarifga nima kirishini baza tekshiradi, shuning uchun sayt, ilova va bot bir-biridan farq qilmaydi. Katalogdagi shubhali yozuv taxmin qilinmaydi — insonni kutadi. SMS orqali kirish buzilsa, sabab yozuvdan topiladi. Sekin joy esa avval oʻlchanadi, keyingina qayta yoziladi.
Biznesingizga shunday tizim kerakmi?
Vazifani ikki-uch gapda yozing. Oʻsha ish kunining oʻzida javob beramiz va suhbat vaqtini taklif qilamiz.
Biz bilan bogʻlaningVazifani Telegramda muhokama qilish
- Toshkent vaqti bilan oʻsha ish kunining oʻzida javob beramiz.
- Nodirxonga yozing — u vazifangizga kerakli jamoa aʼzosini jalb qiladi.