aslamjon.uz

Frontend / Full Stack Engineer · Samarkand, Uzbekistan

I build products that keep working when the internet doesn't.

5+ years with React, TypeScript, NestJS and PostgreSQL. Most recently on an ELD compliance SaaS for US trucking companies; before that CTO and sole engineer on a point-of-sale product used by small shops, and frontend team lead on large ERP and LMS platforms.

Career receipt
ASLAMJON IBRAGIMOV
Years shipping software5+
Shops that ran on my POS8+
Sales transactions / month19,000+
Products in catalog30,000+
Frontend engineers led5
People using my side projects1,700+
ASLAMJON.UZOnline

Selected work

Products and systems I designed and built end to end.

CTO & Software Engineer · Xaridor2024 — 2026

A point-of-sale system that doesn't stop when the connection does

Problem

Small grocery shops lose sales every time the internet drops — and in their neighbourhoods, it drops often.

What I built

An offline-first desktop app in Electron.js and React that keeps checkout running with no connection and syncs automatically when it returns — plus the NestJS/PostgreSQL backend behind it and the Linux server it runs on. I built the product on my own, end to end.

Where it stands

Reached 8+ paying businesses, 19,000+ transactions a month and a 30,000+ product catalog.

Electron.jsReactTypeScriptNestJSPostgreSQLPrismaLinuxnginx
Frontend Team Lead · PDP2021 — 2024

Turning an ERP into something you configure instead of code

Problem

An ERP and LMS used by 130,000+ people across 17 modules and five companies, where every department wanted the same records shown a different way — different columns, different order, different filters. Building each of those screens by hand would have been endless, and no two people would ever agree on one layout anyway.

What I built

A config-driven layer we called the generic view: a page is defined by a backend endpoint plus a view configuration, and saved templates — column sets, ordering, filters — attach to that page and can be shared between people, so each team keeps its own way of seeing the same data. At its centre is a grid I built from scratch: row virtualization for thousands of rows, inline editing with rich field types, drag-and-drop and pinnable columns, new columns created at runtime and synced to the backend, a filter system you can compose freely (ranges, operators, multi-select), inline image, audio and PDF handling, and modals injected per page to run actions against the rows. Around it I built a browser-style tab shell and the permission layer behind 38+ roles, reaching down to individual pages, actions and columns — all with as few third-party dependencies as we could manage.

Where it stands

The layer now powers 100+ pages across five companies, and adding a screen became a configuration job rather than a frontend project. I grew from developer to team lead of five engineers while it took shape.

ReactReduxTypeScriptAnt Design
Frontend Engineer · ISM (Dubai, remote)2025 — 2026

Writing a chart engine from scratch when no library could do the job

Problem

The hours-of-service log is the main screen of an ELD system — a US truck driver’s 24-hour day drawn as a connected step line across four duty statuses, with violations, breaks and running totals on top. It carries legal weight, so it has to be exact. Recharts and Chart.js could not support the interaction the design called for: hovering a segment had to highlight that exact time range, place tooltips on both of its edges, and update the duty-hour total below.

What I built

A framework-agnostic TypeScript class that generates the entire SVG itself. It takes the API data, a timezone and a hover callback, then does the rest: mapping time to coordinates, connecting status segments, placing labels so they never collide, and rendering. Building it in React would have cost performance and control, so it deliberately depends on nothing. I also built the admin and superadmin panels, fleet-monitoring dashboards fed by in-truck IOSiX devices, a Gemini-powered assistant that explains engine error codes to dispatchers, and a maintenance scheduler.

Where it stands

The Flutter mobile team tried to draw the same chart natively, could not implement the full design, and ended up loading mine in a WebView — it is still running in production, on the screen every driver and dispatcher opens daily.

TypeScriptSVGReactMUIGemini API
Side projectSmart Flashcard

A spaced-repetition scheduler I designed before I knew the name for it

Problem

I learned English words in a notebook and forgot them — I could recite a list in order, but shuffle it and I was lost. Paper flashcards fixed the order problem and let me study anywhere, but created a worse one: the words I already knew kept coming back as often as the ones I did not, and once the stack grew, scheduling them by hand became impossible.

What I built

A scheduler that measures a word’s position in repetitions, not in calendar days. Each finished batch raises the learner’s counter by one; answering “I know this” pushes a word three repetitions further out, “I don’t” pulls it three closer, and every word whose counter falls behind the learner’s comes back. Because nothing is tied to a date, the whole timezone problem disappears — a person studying at 3 a.m. across a date boundary gets exactly the right words. Around it: US pronunciation audio cached on the server and fetched only when missing, a curated 4,000+ word dataset with images and example sentences, shared decks so learners never re-type words someone has already added, and a leaderboard with progress nudges to keep people coming back. It runs as a Telegram bot and a web app.

Where it stands

It is public and running, with no marketing behind it — I built it for my own problem and left it open in case someone else had the same one. The first scheduler is deliberately simple, and I now know where it falls short, so I am rebuilding it on NestJS and PostgreSQL with a stronger model and a Telegram Mini App sharing a single frontend codebase with the web version.

Node.jsExpressMongoDBReactTelegram Bot APINestJSPostgreSQL
card.aslamjon.uz
Side projectTicket UZ

Catching train tickets the moment they come back

Tickets sell out, then quietly reappear — someone cancels, or the railway adds a wagon. Almost nobody is watching at that moment. This bot watches, and tells you instantly. 1,700+ people use it, and the number keeps growing on its own.

Node.jsTelegram Bot APIPostgreSQL
@ticket_uz_bot

Also built

Smaller builds and client work — happy to go into any of them.

  • metalmart.uzBackend and admin panel for an online metal-products marketplace — catalog and order management.
  • Construction workflow desktop appDesktop tool for construction development companies, bringing transparency and forecasting into their workflow.

What I work with

Strongest on the frontend, comfortable owning the rest of the stack down to the server.

Frontend

  • React
  • TypeScript
  • Redux
  • MUI · Ant Design
  • Responsive UI

Backend

  • Node.js
  • NestJS · Express
  • PostgreSQL · MongoDB
  • Prisma
  • REST APIs

Desktop & bots

  • Electron.js
  • Offline-first sync
  • Telegram Bot API
  • Gemini API

Infrastructure

  • Linux (Ubuntu)
  • nginx
  • VPS administration
  • Git

A bit about me

I started at PDP Academy in Tashkent, joined the company that taught me, and grew from junior developer to leading a five-person frontend team on ERP and LMS platforms.

For two years I ran the engineering side of a POS product of my own — interface, API, database, server. Building something end to end, with real shops depending on it daily, is where I learned the parts of engineering that a frontend role alone never teaches you.

I am open to frontend and full stack roles — remote, hybrid, or on-site in Tashkent.