Backend developer · fluent in frontend

Aslbek
Utayev

I build servers, APIs, queues and the glue to physical devices. When needed, I ship the interface too.

← drag the line: how much of me is backend →

GET

/whoami

01 / 05

I build the part users never see: where the payment clears, the device answers and the bot never sleeps.

Most of my work orbits Django: DRF, async views, WebSockets with Channels, background jobs with Celery. I integrate payment providers, drive vending machines, kiosks and heaters over MQTT, and keep a fleet of Telegram bots running in production.

I'm at home on the front end too: merchant dashboards and CRM panels in Vue 3, control panels in React, landing pages in Next.js. So I design APIs through the eyes of whoever consumes them.

"name"
"Aslbek Utayev"
"role"
"Backend Developer"
"side"
"Vue · React · Next.js"
"location"
"Tashkent, Uzbekistan"
"main_stack"
["python", "django", "postgres"]
"open_to_work"
true
40+repositories
11Telegram bots
7domains in prod
4languages: uz · ru · en · qq
GET

/architecture

02 / 05

The common skeleton behind my projects. Click a node to see where it's used.

ingressedgeappdata · jobsWeb / SPAvue · react · nextTelegrambots · mini appDevicesvending · kiosk · heaternginxtls · reverse proxyWebhookaiogram 3MQTT brokeraiomqttDjango APIdrf · async · asgiChannelswebsocketPostgreSQLprimary dbRediscache · brokerCeleryworker · beatExternal APIspay · yandex · ai
GET

/projects

03 / 05

Each endpoint is a project. Click one to see its response.

GET/projects/2pay2pay / PulboxFintech · IoT platform

A platform for payments, vending machines and kiosks. One Django monolith covers payments, subscriptions, devices, an MQTT broker, CRM, reporting and several Telegram bots.

  • Real-time communication with devices over MQTT
  • Payment provider integrations and a transaction reconciliation bot
  • Scheduled jobs with Celery beat, automatic deploys via GitHub Actions
  • Merchant dashboard (Vue 3 + TS) and an internal CRM with Django Group roles
Read more
HTTP/1.1 200 OK
{
"domain": "2pay.uz",
"type": "Fintech · IoT platform",
"stack": ["Django", "DRF", "PostgreSQL", "Redis", "Celery", "MQTT", "Docker", "Vue 3"]
}
WS/ws/kioskInterCity KioskReal-time backend

Server for kiosks that sell railway tickets. All kiosk traffic runs through a single WebSocket using a custom protocol.

  • Documented kiosk ↔ server protocol (PROTOCOL.md)
  • Click / Payme payments, refund alerts pushed to Telegram
  • Tests covering orders, payments and the WebSocket protocol
  • Kiosks authenticate with device_id + token
Read more
HTTP/1.1 101 Switching Protocols
{
"domain": "railway ticket kiosks",
"type": "Real-time backend",
"stack": ["Django 5.1", "Channels", "Celery", "PostgreSQL", "Redis", "pytest"]
}
GET/projects/promoy-marketPromoy MarketAsync backend + Vue SPA

A B2B restocking marketplace for shops. Split out of the monolith into its own service: no DRF, fully async Django views on ASGI + uvicorn.

  • Async rule: no lazy relations, everything preloaded with select/prefetch
  • Checkout uses select_for_update + transaction.atomic, race-free
  • SSO via the 2pay token, user and company synced through a Redis cache
  • Frontend: Vue 3 + Tailwind 4, CRM plays a sound and pushes a notification on new orders
Read more
HTTP/1.1 200 OK
{
"domain": "promoy-market.uz",
"type": "Async backend + Vue SPA",
"stack": ["Django async", "ASGI", "uvicorn", "PostgreSQL", "Redis", "Vue 3", "TypeScript", "Tailwind 4"]
}
PATCH/heater-control/devices/:idZevron — heater controlIoT · full-stack

Remote control for coal-fired heaters. The backend collects telemetry over MQTT, monitored through a React dashboard and a Telegram bot.

  • Telemetry: water, coal and air temperature, motor current, RSSI, fire and sensor alerts
  • Changing a temperature threshold pushes the command to the device instantly
  • React + TS dashboard: per-branch filter, 24-hour temperature chart
  • Telegram bot: linked via deep-link or invite code, read-only, stateless
Read more
HTTP/1.1 200 OK
{
"domain": "coal heaters",
"type": "IoT · full-stack",
"stack": ["Django", "aiomqtt", "Celery", "knox", "auditlog", "React", "Vite", "aiogram"]
}
GET/projects/silkscoreSilkScoreSports platform backend

Backend for a sports news and live-match platform, built to a v2.0 spec: auth, sports data, CMS, comments, communities and search.

  • Sign-in via OTP, Google and Apple; JWT (15 min / 30 days, blacklisted on logout)
  • WebSockets for live matches and community channels, secured with JWT
  • API-Football adapter with Celery polling live matches
  • Threaded comments, reports and a profanity filter; media on S3
Read more
HTTP/1.1 200 OK
{
"domain": "silkscore.uz",
"type": "Sports platform backend",
"stack": ["Django 5", "DRF", "Channels", "Celery", "SimpleJWT", "S3", "OpenAPI", "Next.js"]
}
POST/ai/postsContentLab AI SMM botAI pipeline

A pipeline that turns Instagram reels and stories into ready-to-post Telegram content. Nothing goes live without admin approval.

  • Video is pulled at 720p, prepped with ffmpeg, transcribed by Aisha STT
  • Claude writes the post in the brand's voice, the admin approves or edits
  • Publish now or schedule; a weekly report lands every Monday
  • Workspaces: multiple Instagram account ↔ channel pairs
Read more
HTTP/1.1 201 Created
{
"domain": "Instagram → Telegram",
"type": "AI pipeline",
"stack": ["Django", "aiogram 3", "PostgreSQL", "ffmpeg", "Anthropic API", "Aisha STT", "Docker"]
}
GET/projects/useful-taxiUseful Taxi CRMCRM + bot ecosystem

A CRM for a taxi fleet: drivers, balances, payments and Yandex Fleet sync. The driver bot never touches the CRM database directly, only an internal REST API.

  • Driver import and sync from the Yandex Fleet API
  • Bot ↔ CRM via an internal Bearer-keyed /api/bot/, FSM and rate limits in the bot's own Redis
  • 4 languages: Uzbek, Russian, English, Karakalpak
  • A Telethon userbot that runs many Telegram accounts from one panel
Read more
HTTP/1.1 200 OK
{
"domain": "taxi fleet",
"type": "CRM + bot ecosystem",
"stack": ["Django 5", "DRF", "Celery", "Redis", "aiogram", "Telethon", "Jazzmin"]
}
POST/api/scanIMEI RegisterBot + Mini App

Collects device data (P/N, SN, IMEI, SW) from QR codes and exports it to Excel. The bot reads a sent photo; the Mini App scans straight from the camera.

  • Bot and Mini App write to one Django database, results land in one sheet
  • Webhook mode; Django binds to 127.0.0.1 only, exposed through nginx
  • Per-list Excel export
Read more
HTTP/1.1 201 Created
{
"domain": "Telegram Mini App",
"type": "Bot + Mini App",
"stack": ["Django", "aiogram", "Telegram WebApp", "nginx", "openpyxl"]
}
GET/projects/vendboxVendboxLanding + API + bot

The full kit for a vending machine brand: an SSG landing page, a public API, a marketing bot, plus merchant and purchase apps.

  • Next.js 16 App Router, statically generated in 3 languages; survives an API outage
  • DRF API: products, pricing plans and partnership leads
  • aiogram 3 bot: uz/ru/en, collects leads
  • Checks with pytest, ruff and makemigrations --check
Read more
HTTP/1.1 200 OK
{
"domain": "vendbox.uz",
"type": "Landing + API + bot",
"stack": ["Next.js 16", "Tailwind 4", "DRF", "PostgreSQL", "aiogram 3", "Vue 3"]
}
GET/projects/promoyPromoy ecosystemKiosk + landing

Landing page, backend, Linux kiosk and a group moderation bot for Promoy. The fun part: locking a touchscreen kiosk down against GNOME's hidden gestures.

  • Next.js 14 RSC landing, library-free i18n, zero hydration warnings
  • Kiosk: blocked the 3/4-finger gestures hardcoded into Mutter
  • systemd service with install / update / uninstall scripts
  • Django 5.2 + DRF backend behind gunicorn + nginx
Read more
HTTP/1.1 200 OK
{
"domain": "landing · kiosk · bots",
"type": "Kiosk + landing",
"stack": ["Next.js 14", "TypeScript", "Django 5.2", "Linux", "systemd", "asyncpg"]
}

// more work

Next.js

ParkingBox

parkingbox.uz

Landing page, static export

React

Pulbox

pulbox.uz

React 19 + Tailwind 4 SPA

React

Katyol.uz

katyol.uz

Heater management interface

Django

Stayuz

backend

DRF + Celery, a Dockerfile per service

Django

SilkScore waitlist

wait.silkscore.uz

Rate limiting, phone validation, Excel export

aiogram

Group control bot

Telegram

Group moderation, asyncpg

aiogram

Admin bot

Telegram

Applications and Excel reports, SQLAlchemy

aiogram

Zayavka bot

Telegram

Lead bot running through a proxy, Redis

GET

/stack

04 / 05

The tools I reach for every day.

requirements.txt
  1. django==5.x
  2. djangorestframework==3.15
  3. channels==4.x
  4. celery==5.4
  5. aiogram==3.x
  6. telethon==1.x
  7. aiomqtt==2.3
  8. psycopg==3.2
  9. redis==5.x
  10. uvicorn==asgi
  11. gunicorn==23
  12. pytest==+ ruff
package.json
  1. vue: ^3.5
  2. react: ^19
  3. next: ^16
  4. typescript: strict
  5. tailwindcss: ^4
  6. vite: ^7
  7. chart.js: lazy
  8. leaflet: lazy
infra.yml
  1. docker: compose
  2. nginx: reverse proxy
  3. postgresql: 13+
  4. redis: cache · broker
  5. mqtt: IoT
  6. github-actions: CI/CD
  7. linux: VPS · systemd
  8. s3: media
POST

/contact

05 / 05

A project, a collaboration or just a question. Fill in the form and the request builds itself.

Your message gets drafted: send it via Gmail or your mail app.

// next step

Let's build something together.

Message me on Telegram
aslbek@asldev: ~
❯