Мои работы

Проекты

Избранные веб-проекты Нодирбека Искандарова — на React, Next.js, TypeScript, Go и MongoDB. С исходным кодом и живыми демо.

Корпоративный HR-портал и учёт посещаемости
Избранные

Корпоративный HR-портал и учёт посещаемости

Самая крупная из моих систем: внутренний портал, охватывающий весь жизненный цикл сотрудника в большой организации. Посещаемость собирается с турникетов Hikvision через отдельный процесс подключения, затем агрегируется в мониторинг по сотрудникам и отделам. Кроме учёта — справочник сотрудников, управление оргструктурой, workflow обращений с многоступенчатым согласованием, внутренние новости и сообщения, управление OAuth-клиентами для интеграции смежных систем, журнал аудита и аналитика на Highcharts. Около 30 страниц, у каждой свои правила доступа по ролям. ONNX Runtime выполняет инференс прямо в браузере.

ReactJavaScriptReact RouterHighchartsFramer Motion+4
SIAT — админ-панель статистического реестра
Избранные

SIAT — админ-панель статистического реестра

Большая административная панель на Vue 2 для управления статистическими классификаторами и данными реестра. Многоуровневые иерархии классификаторов с полным CRUD на каждом уровне, система внутренних сообщений с созданием/редактированием/просмотром и просмотрщик логов интеграции для отслеживания обмена данными с внешними системами. Rich-text через Quill, графики на Chart.js, клиентское шифрование crypto-js, полная локализация.

Vue.jsVuexVue RouterSCSSChart.js+5
Обучающая платформа на базе AI
Избранные

Обучающая платформа на базе AI

Полнофункциональная обучающая платформа, где Claude выступает репетитором. Курсы делятся на модули и темы; у каждой темы — материал урока, практические задания с проверкой моделью и отдельная ветка чата, сохраняющая контекст темы. Прогресс отслеживается по пользователю и теме. Есть админ-панель с управлением доступом к курсам и просмотром прогресса. Next.js App Router, NextAuth (пароль + Google), Prisma поверх SQLite, деплой в Docker за Caddy.

Next.jsTypeScriptReactPrismaSQLite+5
Мониторинг обследования сельхозземель и соцобъектов
Избранные

Мониторинг обследования сельхозземель и соцобъектов

Система мониторинга полевых обследований на основе интерактивных карт. Охват сельхозучастков и объектов социальной сферы отображается на картах Leaflet с инструментами рисования Geoman — полигоны можно рисовать и править прямо в браузере. Поиск по районам с отдельным модальным окном и состояниями загрузки данных по махаллям, несколько карт для разных туров обследования, дашборд со сводкой по выполнению.

ReactLeafletGeomanRedux ToolkitAnt Design+4
Narxtahlil — анализ и прогноз цен
Избранные

Narxtahlil — анализ и прогноз цен

Аналитика потребительских цен по Узбекистану. Цены в разрезе рынков, регионов и товаров, отдельное представление для сравнения нескольких товаров или регионов, страница прогноза и раздел инфляционных ожиданий. Геометрия регионов рендерится из GeoJSON по каждой области — картограмма уровней цен. У каждого товара свой маршрут с историческим рядом. Страница методологии описывает происхождение цифр. Next.js App Router, Recharts, полноэкранный режим графиков, светлая и тёмная темы.

Next.jsTypeScriptReactRedux ToolkitRecharts+4
GIS-дашборд мониторинга регистрации
Избранные

GIS-дашборд мониторинга регистрации

GIS-дашборд, отслеживающий охват регистрации вплоть до махалли по областям Узбекистана. Карты на MapLibre GL через react-map-gl, polygon-clipping вычисляет пересечения и объединяет административные границы на лету. Представление махалли углубляется от области к району и к кварталу с живыми счётчиками, QR-коды ведут полевых сотрудников прямо к записи.

ReactMapLibre GLreact-map-glpolygon-clippingRedux Toolkit+4
BarberApp — платформа бронирования (мобайл + админка + API)
Избранные

BarberApp — платформа бронирования (мобайл + админка + API)

Единственный проект, где я вёл все три уровня. Бэкенд на NestJS: API с JWT-авторизацией, TypeORM поверх PostgreSQL, планировщик задач, WebSockets для живых обновлений броней и Telegram-бот уведомлений. Клиент на React Native (Expo) разделяет роли барбера и клиента. Авторизация через OTP, Telegram-логин и выбор роли, API устройства и геолокации для поиска барберов рядом. Админка на React: барберы, брони, услуги, отзывы, пользователи, карта Leaflet и дашборды на Recharts.

NestJSReact NativeExpoPostgreSQLTypeORM+7
Kino Bot — выдача фильмов по подписке
Избранные

Kino Bot — выдача фильмов по подписке

Telegram-бот, выдающий фильмы по подписке, вместе с отдельным admin-PWA. Пользователь выбирает тариф, оплачивает, администратор подтверждает платёж, и дальше фильмы приходят по числовому коду прямо из закрытого канала. Админская часть — самостоятельное устанавливаемое веб-приложение с web push уведомлениями, поэтому ожидающий платёж доходит до телефона без открытия Telegram. Цены тарифов и реквизиты карты хранятся в базе и правятся из админки, а не зашиты в код. Работает в Docker за общим reverse proxy Caddy с автоматическим HTTPS.

PythonFastAPIaiogramSQLiteReact+5
Панель мониторинга сервера
Избранные

Панель мониторинга сервера

Дашборд реального времени для VPS, на котором размещены все эти проекты. Десять экранов: CPU, память, диск и сеть, каталоги проектов с размерами и состоянием git, контейнеры Docker, сервисы и таймеры systemd, попытки атак из auth.log вместе с состоянием fail2ban и файрвола, HTTP-трафик из логов Caddy, живые логи и развёртывание. Измерения приходят каждые две секунды через Server-Sent Events, причём на сервере работает один общий таймер — десять открытых вкладок стоят одного измерения. Развёртывание запускается вебхуком GitHub, подпись которого проверяется по сырому телу запроса. Панель намеренно только читает.

NestJSTypeScriptReactRedux ToolkitRTK Query+3