Asosiy kontentga o‘tish

Loyihalar

Startup · 2025 · ~2 daqiqa o‘qiladi

Tashkent Metro — mobil ilova backend'i

Toshkent metrosi uchun mobil ilovaning to'liq backend'i: GeoDjango xaritalar, real-time ogohlantirishlar, push-bildirishnomalar. Play Market'da 100K+ yuklab olingan.

Python · Django · DRF · PostGIS · Channels · Firebase · Docker

  • 100K+ yuklab olish
  • 3 oyda relizgacha
  • 3 til (uz/ru/en)
  • real-time + push
Mundarija

Muammo#

Toshkent metrosidan har kuni yuz minglab odam foydalanadi, lekin yo'lovchida zamonaviy raqamli yordamchi yo'q edi: qaysi stansiya ochiq, qaysi liniyada uzilish bor, xarita qayerda — bu ma'lumotlar tarqoq va eskirgan holda edi. Inlab startup'i buni hal qiladigan mobil ilova qurishga kirishdi. Backend, deploy, CI/CD va push-bildirishnomalar to'liq mening zimmamda edi — mobil jamoa tayyor API kutardi.

Yechim#

Uch oyda (2025 sentabr–noyabr) MVP'dan Play Market relizigacha yetkazilgan Django backend: stansiya va liniyalarning geo-ma'lumotlari, uch tildagi kontent, jonli ogohlantirishlar va shaxsiy kabinet — hammasi bitta API ortida.

Arxitektura#

Backend to'rtta modulga bo'lingan (har biri alohida Django app):

  • metro — liniyalar va stansiyalar: koordinatalar PostGIS PointFieldda, geo-so'rovlar uchun GiST indekslar; har stansiyaning ochiq/qisman/yopiq holati;
  • alerts — xizmat ogohlantirishlari: Django Channels (WebSocket) orqali ilovaga jonli yetkaziladi;
  • notifications — Firebase FCM push: qurilmalar ro'yxati (Android/iOS), mehmon-foydalanuvchilarni ham qamraydi — push olish uchun ro'yxatdan o'tish shart emas;
  • accounts — JWT + Google Sign-In, profil va sevimli stansiyalar.

Infratuzilma: Docker image GitHub Actions'da quriladi, GHCR registriga yuklanadi va VPS'ga avtomatik deploy bo'ladi — git push dan production'gacha qo'l tegmaydi.

Qiyin qarorlar#

Real-time'ni ikki kanalga bo'lish. Ogohlantirish ilova ochiq turganda WebSocket orqali bir zumda kelishi kerak, yopiq turganda esa push bo'lib borishi kerak. Yechim: ogohlantirish bir marta yoziladi, signal ikkala kanalga — Channels guruhiga ham, FCM navbatiga ham — birdan tarqaydi. Bitta manba, ikki yetkazish yo'li: nosinxronlik muammosi sinfan yo'qoladi.

Geo-ma'lumotlar va ko'p tillilik. Oddiy kenglik/uzunlik ustunlari o'rniga PostGIS tanlandi — "eng yaqin stansiya" kabi so'rovlar bazada, indeks bilan ishlaydi. Tarjimalar uchun alohida jadval o'rniga JSONField ({"uz": ..., "ru": ..., "en": ...}) — schema soddaligi uchun ongli trade-off: tillar soni qat'iy va kontent hajmi cheklangani uchun bu yechim JOIN'larsiz tezroq ishlaydi.

Natija#

  • Ilova Play Market'da jonli — 2026-yil avgust holatiga 100 000+ yuklab olish;
  • Backend uch tilda kontent beradi, real-time va push barqaror ishlaydi;
  • 3 oylik muddat ichida noldan production'gacha — CI/CD tufayli reliz jarayoni bir buyruqqa tushgan.

Kod — startup mulki (yopiq). Arxitektura va yechimlar haqida savollar bo'lsa — bog'laning.

Aloqador maqolalar