2025 · Engineer
Tourbot, CityMax, UserBot, AiAdminRobot va boshqa 20+ bot uchun yagona Node.js stack. Har bot o'z domeniga ega, lekin umumiy auth, queue, backup va monitoring ulashadi.
- Rol
- Engineer
- Yil
- 2025
- Stack
- Node.js
- TypeScript
- Prisma
- PostgreSQL
- Telegraf
- BullMQ
- Redis
- Docker
- Havolalar
Qisqacha
Muammo
20+ bot har biri "o'zining stack'i" bilan qurilgan bo'lsa — har yangilanish o'zining pipeline'iga muhtoj bo'ladi. Kichik jamoa uchun bu imkonsiz darajada ko'p texnik qarz. Kerak edi: har bot alohida, lekin infratuzilma umumiy.
Yondashuv
- Monorepo-style —
cyber-step/ibrokhimweb/bots/*— har bot o'z repo'sida, lekin bir xilpackage.jsonskeletini ulashadi (CI template, Dockerfile, eslint config). - Ulushlangan xizmatlar — centralized API (yuqorida ko'rilgan): user auth, passport, manzil, telegram ma'lumotlari — barcha botlar shu API'dan o'qiydi.
- Queue — BullMQ + Redis, har bot uchun alohida namespace. Yuborilmagan xabarlar, crash, retry — hammasi kuzatiladi.
- Deploy — VPS'da bitta PostgreSQL, bitta Redis, har bot uchun alohida container. Nginx Proxy Manager bilan har bot o'z sub-domain/webhook'iga ega.
Texnik tafsilotlar
- Graceful shutdown — bot container
SIGTERMoldida ishlovchi xabarlarni tugatadi, queue'ga qaytaradi. - Fail2ban integration — spam yuboruvchi foydalanuvchilar host darajasida ban qilinadi.
- Admin panel — bull-board orqali queue monitoring, BasicAuth bilan himoyalangan.
Natija
- 20+ bot yagona deploy pipeline bilan ishlaydi
- 99%+ uptime oxirgi 90 kunda (Uptime Robot monitoring)
- Har bot < 150MB RAM avg — containerlar subscribe qoldiqlari ko'p yemaydi
- Har yangi bot qo'shish — taxminan 30 daqiqa (template + env qo'shish)