I build complex systems you can rely on.
I design and run production systems for government and enterprise — from architecture to release — and lead the team.

I started my journey in development back in 2021 as a frontend mentor, and today I lead a team as a Team Lead. Along the way I grew from building interfaces to designing architecture and shipping full production platforms.
I work across the whole stack: React / Next.js on the frontend and Bun / Hono / Node.js on the backend. I'm a self-taught developer and I keep learning every day.
I lead the development team: assigning tasks, running code reviews, managing workflows in Linear. I design architecture and build a range of production platforms as a fullstack developer.
Single-handedly built the entire frontend of the Online Education platform (LMS): user dashboards, video lessons, a learning content editor, PDF certificate generation and analytics dashboards (backend in Django).
Taught frontend development to kids and adults: HTML, CSS, JavaScript, React. 6-month courses, 2–3 groups daily. Brought students from zero to a junior level.
Business-process monitoring and control platform for organizations; with a mobile app and a facial-recognition module.
School management platform: students, attendance, payments, reports. Monorepo.
System for kindergartens: face recognition (FaceID) and a payments module.
Parking-violation capture: license-plate recognition from cameras (RTSP / FFmpeg), thermal receipt printing, Electron desktop.
Cafe digitization: backend, admin panel and mobile API for customer and courier, with queues.
Online education (LMS) platform frontend: courses, video lessons, PDF certificates and dashboards. Built entirely solo.
Moving tenant isolation from a WHERE clause into PostgreSQL RLS: writing policies, passing context, testing them, and the traps that bite most often.
Migrating madrimov.uz to Next 16, React 19 and Bun: proxy instead of middleware, async params, pinning TypeScript 6, and three separate PRs.
The downsides of Redux Toolkit, MobX, and Context API, and why switching to the simple, minimal Zustand was the best decision.