untra.dev
Открыт для проектов

Привет, я Азизхон Баходыров

React / Next.js разработчик

2Года в проде
4Проекта, почти всегда один

Я был единственным фронтендером на админках с реальными заказами, курьерами и выплатами. Сейчас строю магазин и CRM для локального бизнеса и пишу об этом по ходу дела.

Ташкент
Доказательства

Что я построил

Три проекта, три разные ситуации. Один — прод-система, о которой я могу только рассказать, код принадлежит компании. Один — полностью открытый, можно прочитать целиком. Один я строю прямо сейчас, в открытую.

Кейс 01: работа в компанииВ проде

Noor, операционные и мерчант-админки

Платформа доставки еды · React-разработчик, 2024-2025

Три отдельных фронтенд-репозитория в одной компании и три разные роли в них.

Админка для мерчантов

Построил почти единолично, от начала до конца: заказы, тарифы, биллинг и комиссии, промокоды, счета, отчётность, интеграции для партнёров. Панель, через которую бизнесы на платформе ведут свою операционку. Realtime-чат на чистом WebSocket, со своими хуками и utils и с auth-wait хендшейком, который мы сделали вместе с бэкендом: после подключения он немного ждёт токен, прежде чем начать работу. Позже добавил полноценную систему учёта наличных с расчётом комиссий.

Центральная операционная админка (cpanel)

Самая большая и сложная из трёх систем: управление курьерами, живой трекинг, чат, логистика транспорта и батарей, финансовые транзакции компании. Я был основным архитектором и построил почти всё сам за первый год, а затем ввёл в проект и ревьюил сменщика, когда фокус сместился на мерчант-панель.

Клиентский сайт

Контрибьютор в Next.js 15 сайт: живой GPS-трекинг курьера с анимированной отрисовкой маршрута на карте, оптимизация рендеринга и памяти для этой карты. Также i18n, Framer Motion, OTP-авторизация, деплой через Docker и GitHub Actions.

ReactViteTypeScriptAG-Grid EnterpriseRedux ToolkitWebSocketNext.js

Код компании. Я был автором или контрибьютором, но давать на него ссылку не могу, это не мой код.

Кейс 02: открытый кодРаботает, открытый код

Vocabulary, тренажёр слов с интервальными повторениями

Личный проект · открытый код

Тренажёр слов с двумя независимыми SM-2-треками, тем же алгоритмом интервальных повторений, что в Anki. Узнать слово и вспомнить его самому — разные навыки с разной кривой забывания, поэтому у них отдельные графики повторений. Next.js App Router и TypeScript. Данные слов спрятаны за интерфейсом repository: сейчас это Notion, а смена хранилища позже означает один новый класс вместо переписывания. Озвучка через Web Speech API, без платного TTS.

  • Два независимых SM-2-трека: узнавание и воспроизведение считаются отдельно
  • Repository-паттерн. Сегодня Notion, смена хранилища — один новый класс
  • Next.js App Router, TypeScript, Tailwind, Prisma + Postgres для стриков
  • Озвучка слов через Web Speech API, без платного TTS-сервиса
Next.jsTypeScriptTailwind CSSPrismaNotion API

Собран с Claude Code. Я прочитал и понимаю весь код.

Открыть на GitHub
Кейс 03: в процессеВ процессе, ещё не запущено

Maxler, магазин и CRM для реального бизнеса

Собственная инициатива · франшиза спортивного питания

Собственная инициатива: сделал это для реального локального бизнеса спортивного питания, чтобы прийти к ним с готовым продуктом. У них пока нет юрлица и платёжного шлюза, поэтому заказы уходят мгновенно через Telegram Bot API. Next.js, React 19, Tailwind CSS v4, TypeScript, Feature-Sliced Design.

  • Нет юрлица, нет платёжного шлюза. Заказы мгновенно уходят через Telegram Bot API
  • Релиз по фазам: сначала рабочий MVP, каталог, корзина, мгновенный заказ, потом итерации
  • Next.js, React 19, Tailwind CSS v4, TypeScript, Feature-Sliced Design
Next.jsReact 19Tailwind CSS v4TypeScriptshadcn/uiTelegram Bot API

Мой собственный проект, пока закрыт, он не закончен.

Кейс 04: автоматизацияРаботает, открытый код

tg-notion-sync, перенос финансов из Telegram в Notion

Личный проект · Node.js-сервис

Банк присылает уведомления об операциях в Telegram, а вручную переносить каждую в Notion — как раз то дело, которое я постоянно откладывал. Обычный Bot API тут не подходит: он не может читать сообщения другого бота в чате, если мой бот не добавлен туда с админ-правами, а для личных банковских уведомлений это не устроить. Поэтому сервис заходит как обычный пользовательский аккаунт Telegram через MTProto, тот же протокол, что у официального приложения, и слушает нужный чат в реальном времени.

  • Читает личный чат через MTProto (GramJS), потому что Bot API не даёт доступа к сообщениям другого бота там
  • Разбирает банковские уведомления регулярными выражениями: сумма, валюта, дата, карта, остаток, место операции
  • Сам создаёт запись в Notion, сопоставляя карту со счётом
  • Не угадывает категорию траты автоматически — это заполняется вручную, угадывание было бы недостоверным
Node.jsMTProto (GramJS)Notion APIDockerFly.io

Собран с Claude Code. Я прочитал, понимаю и поддерживаю весь код.

Открыть на GitHub

Как я работаю

Три привычки, которые видны в каждом проекте выше.

01

Релиз по фазам

Сначала рабочий MVP, основной сценарий, без украшательств, потом итерации по тому, чем реально пользуются. Именно так сейчас строится Maxler: каталог и мгновенный заказ раньше всего остального.

02

Владею всем фронтенд-слоем

Клиентские витрины и внутренние admin/CRM-экраны, которые никто снаружи компании не видит. Мне одинаково комфортно по обе стороны этой границы, часто в одном и том же проекте.

03

Честно называю границу

Если фича упирается в эндпоинт бэкенда, которого ещё нет, я так и говорю и останавливаюсь там, вместо того чтобы городить костыль и делать вид, что всё готово.

На чём я строю

По категориям, а не по хайпу.

Языки
JavaScriptTypeScript
Frontend
ReactNext.jsRedux ToolkitAG-Grid EnterpriseTailwind CSSFramer MotionRadix UIshadcn/uiMaterial UIWebSocketi18next
Backend
Node.jsPrismaTelegram Bot APIMTProto
Базы данных
PostgreSQLNotion API

Заметки из Telegram-канала

Пишу про работу по ходу дела: решения, тупики и то, как выглядит Maxler на этой неделе.

Читать канал

Автоперевод с русского — это язык, на котором я пишу.

Вопросы, на которые стоит ответить заранее

Я могу один вести весь фронтенд-слой целиком, и клиентскую часть, и admin/CRM-сторону, и принимать архитектурные решения там. Бэкенд я пишу и понимаю с помощью ИИ, этого хватает на что-то лёгкое вроде tg-notion-sync, но не на прод-бэкенд целого стартапа в одиночку. Тут лучше работать в паре с тем, кто ведёт его на постоянной основе.

Пока нет. Я пишу и понимаю бэкенд-код с помощью ИИ — схемы Prisma, API-роуты, небольшие сервисы, — но это лёгкий уровень, не прод-качество в одиночку. Назову себя фулстеком, когда поведу бэкенд так же, как веду фронтенд.

Я выпускаю по фазам: сначала рабочий MVP, потом итерации по тому, чем реально пользуются. Именно так прямо сейчас в открытую строится Maxler.

Нет, это моя собственная инициатива для реального локального бизнеса, чтобы прийти к ним с готовым продуктом. Проект ещё не закончен.

Я спроектировал и направлял разработку с Claude Code, а не печатал каждую строку сам. Я прочитал и понимаю в нём всё, и это то, что для меня важно.

Нет, этот код принадлежит компаниям, где я работал. Я подробно расскажу, что и почему делал, но не дам ссылку на репозиторий, который не мой.

Коротко

Я React-разработчик из Ташкента, пишу под именем Untra.dev. Два года продакшн-React в двух стартапах, почти всё время единственным фронтендером в команде — так я привык сам принимать решения и жить с ними.

В Noor, платформе доставки еды, я почти в одиночку построил админку для мерчантов и был основным архитектором гораздо более крупной внутренней операционной системы, пока не передал её сменщику, которого сам же ввёл в проект. До этого в Buchet.uz я был контрибьютором в админке сервиса доставки цветов и спроектировал в ней ролевую систему доступа с нуля.

Сейчас я по собственной инициативе строю Maxler, магазин и CRM для реального локального бизнеса спортивного питания. Vocabulary, открытый тренажёр слов, уже готов и лежит на GitHub.

Я ещё не senior, и бэкенд у меня пока не на уровне фронтенда. Закрываю оба пробела осознанно и пишу об этом процессе в Telegram-канале, а не только о готовых результатах.

Давай на связь

Telegram, там я реально читаю сообщения.

Или на почту: azizhonbahodyrov@gmail.com